В моем приложении Angular.js я запускаю некоторую асинхронную операцию. Перед запуском я охватываю приложение модальным div, а затем, как только операция будет завершена, мне нужно удалить div, была ли операция успешной или нет.Как всегда запускать некоторый код, когда обещание выполняется в Angular.js
В настоящее время у меня есть это:
LoadingOverlay.start();
Auth.initialize().then(function() {
LoadingOverlay.stop();
}, function() {
LoadingOverlay.stop(); // Code needs to be duplicated here
})
Он хорошо работает, однако я предпочел бы иметь что-то чище, как этот псевдо-код:
LoadingOverlay.start();
Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success.
LoadingOverlay.stop();
})
я предполагаю, что это довольно распространенная проблема, так Я думал, что это можно сделать, но ничего не может найти в доке. Любая идея, если это можно сделать?
Если вы можете связать один 'then()', то вы можете с уверенностью связать другой ... '.initialize(). Then (...). Then (...)'. Там нет «наконец»; последний обработчик указан последним. –
@ Beetroot-Beetroot, это не сработает, потому что если 'initialize()' fail, вам все равно нужно объявить как функцию «success», так и функцию «fail» и дублировать код там. –
Не будет работать, или просто неэлегантно? –