1
我有一個拉力賽應用程序,需要相當多的加載時間,它有一些包含數據存儲的循環。我需要找到應用程序完成加載的條件。一旦應用程序的執行完成,我想刷新我的頁面。是否有像onLoad(),我可以用來通知該應用程序已完全加載,然後我可以在底部添加window.location.reload
?拉力賽應用程序onLoad
我有一個拉力賽應用程序,需要相當多的加載時間,它有一些包含數據存儲的循環。我需要找到應用程序完成加載的條件。一旦應用程序的執行完成,我想刷新我的頁面。是否有像onLoad(),我可以用來通知該應用程序已完全加載,然後我可以在底部添加window.location.reload
?拉力賽應用程序onLoad
我會建議使用回調函數,單個數據存儲或多個數據存儲的一系列承諾。前者是非常簡單的,但是這是怎麼了,我通常處理後:
在這種情況下,我同時加載所有的用戶故事,缺陷和測試用例在當前範圍內,那麼當所有記錄已成功加載,將調用「成功」功能。
launch: function() {
Deft.Promise.all([
this.loadRecords('UserStory'),
this.loadRecords('Defect'),
this.loadRecords('TestCase')
]).then({
success: function(recordSets) {
// recordSets = [
// UserStoryRecords,
// DefectRecords,
// TestCaseRecords
// ];
},
failure: function() {
//Handle error loading the store here...
}
});
},
loadRecords: function(model) {
var deferred = Ext.create('Deft.Deferred');
Ext.create('Rally.data.WsapiDataStore', {
limit : Infinity,
model : model,
fetch : ['Name','ObjectID']
}).load({
callback : function(records, operation, success) {
if (operation.wasSuccessful()) {
deferred.resolve(records);
} else {
deferred.reject();
}
}
});
return deferred.promise;
}
希望這有助於!
嗨,感謝您的回覆,我有一個鏈接的數據存儲的鏈接,我將結果從一個數據存儲傳遞到下一個數據存儲,必須以同步方式完成。第一個數據存儲位於for循環內。我希望在for循環完全執行時調用end()函數。但這不是那種方式。 –
我使用'Deft.Promise.all'來並行加載商店,但您可以輕鬆地串行執行此操作。由於您將一個商店結果傳遞給另一個商店,我會查看「Deft.Chain.pipeline」的文檔。 http://docs.deftjs.org/deft-js/0-8-0/#!/api/Deft.promise.Chain-method-pipeline –