Nella mia applicazione Angular.js, sto eseguendo un'operazione asincrona. Prima che inizi copro l'applicazione con un div modale, quindi una volta completata l'operazione, ho bisogno di rimuovere il div, se l'operazione è andata a buon fine o meno.Come eseguire sempre del codice quando una promessa è soddisfatta in Angular.js
Attualmente ho questo:
LoadingOverlay.start();
Auth.initialize().then(function() {
LoadingOverlay.stop();
}, function() {
LoadingOverlay.stop(); // Code needs to be duplicated here
})
Funziona bene, ma preferirei avere qualcosa di più pulito come questo pseudo-codice:
LoadingOverlay.start();
Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success.
LoadingOverlay.stop();
})
Penso che sia piuttosto un problema comune, in modo da Stavo pensando che potrebbe essere fatto ma non riesco a trovare nulla nel doc. Qualche idea se si può fare?
Se si può incatenare uno 'then()', allora si può sicuramente incatenare un altro ... '.initialize(). Then (...). Then (...)'. Non c'è "finalmente" in quanto tale; il gestore finale è l'ultimo specificato. –
@ Beetroot-Beetroot, che non funzionerà perché se 'initialize()' fallisce, è comunque necessario dichiarare sia una funzione "success" che una funzione "fail" e un codice duplicato. –
Non funzionerà, o semplicemente poco elegante? –