我有一個關於dojo/Deferred的問題。我將從這個問題開始,然後詳細說明我在做什麼:如何解決或拒絕Dojo Deferred對象後執行通用代碼?
有沒有辦法執行相同的代碼行,而不管延遲的結果如何排序finally
一個try...catch
聲明?從我讀過的東西看,似乎並不存在,但也許我正在理解文檔錯誤,並希望通過SO社區進行驗證。
下面是我在做什麼:
在道場1.9(也適用於1.8),裝我的一些數據之前實例化一個dojox.widget.Standby(加載覆蓋)的contentPane中。一旦推遲的呼叫完成,我想隱藏我的覆蓋,如下所示:
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();
});
這工作正常;不過,大概我可以在延遲完成之後實現一些進程,這些進程需要幾行代碼而不是一行代碼,而且我不想複製這些代碼行。另一種方法是創建一個私有函數,並在每個塊中用一行代碼來調用它,但如果有更好的方法,我寧願採用這種方法。
在此先感謝!
你和@Lucas已經回答了我的問題,因爲這兩個答案都是正確的。我給@盧卡斯給了'最佳答案',因爲我認爲'總是'代表了一個比'then'更清晰的意圖。但我對它的正確性投了你的答案。 – David