Ho una domanda su dojo/differita. Inizierò con la domanda, poi andrò più in dettaglio su quello che sto facendo:Come eseguire codice comune dopo che un oggetto Dojo Deferred è stato risolto o rifiutato?
Esiste un modo per eseguire le stesse linee di codice indipendentemente dal risultato del differito, un po 'come un blocco finally
in una dichiarazione try...catch
? Da quello che ho letto, non sembra che ci sia, ma forse sto capendo la documentazione sbagliata e volevo verificarlo con la comunità SO.
Ecco quello che sto facendo:
Nel Dojo 1.9 (funziona anche in 1.8), ho un'istanza di un dojox.widget.Standby (un carico di sovrapposizione) per un ContentPane prima di caricare alcuni dati. Una volta completata la chiamata posticipata, voglio nascondere la mia sovrapposizione come mostrato di seguito:
standby = new Standby({
... // standby props
});
this.addChild(standby);
standby.show();
queryResults = grid.store.query({
... // query props
});
queryResults.then(function (results) {
if (results) {
... // do something
}
standby.hide();
}, function (error) {
... // handle error
standby.hide();
});
Questo funziona correttamente; tuttavia, presumibilmente, potrei avere qualche processo da implementare dopo il completamento differito che occupa diverse righe di codice anziché solo una singola riga e non vorrei duplicare quelle linee di codice. Un'alternativa potrebbe essere quella di creare una funzione privata e chiamarla semplicemente con una sola riga in ogni blocco, ma se c'è un modo migliore, preferirei seguire questa strada.
Grazie in anticipo!
voi e @Lucas hanno risposto alla mia domanda dal momento che entrambe le risposte sono corrette. Ho dato la 'migliore risposta' a @ Lucas perché ritengo che 'sempre 'rappresenti un intento più chiaro di un addizionale' then'. Ma ho votato la tua risposta per la sua correttezza. – David