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 –