Mam pytanie dotyczące dojo/Odroczone. Zacznę od pytania, a następnie przejdę do bardziej szczegółowych informacji na temat tego, co robię:Jak wykonać wspólny kod po odroczeniu obiektu Dojo, który został rozwiązany lub odrzucony?
Czy istnieje sposób na wykonanie tych samych linii kodu niezależnie od wyniku odroczenia, na przykład blok finally
w oświadczenie try...catch
? Z tego, co przeczytałem, nie wygląda na to, że jest, ale może rozumiem, że dokumentacja jest niewłaściwa i chciałem to zweryfikować w społeczności SO.
Oto co robię:
W Dojo 1.9 (działa także w 1.8), I instancji dojox.widget.Standby (ładowanie) nakładki na ContentPane przed załadowaniem jakieś dane. Po odroczony rozmowa zakończyła, chcę ukryć nakładkę, jak pokazano poniżej:
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();
});
Działa to dobrze; jednak prawdopodobnie mógłbym wdrożyć jakiś proces po zakończeniu odroczonego zakończenia, które zajmuje kilka linii kodu, zamiast tylko jednej linii i nie chciałbym duplikować tych linii kodu. Alternatywą byłoby stworzenie funkcji prywatnej i po prostu wywołanie jej za pomocą jednego liniowca w każdym bloku, ale jeśli jest lepszy sposób, wolałbym tę trasę.
Z góry dziękuję!
zarówno ty i @Lucas odpowiedziałeś na moje pytanie, ponieważ oba swoje odpowiedzi są prawidłowe. Dałem "Najlepszą odpowiedź" dla @Lucas, ponieważ myślę, że "zawsze" oznacza wyraźniejszą intencję niż dodatkowe "wtedy". Ale głosowałem za twoją odpowiedzią za jej poprawność. – David