【发布时间】:2014-11-06 07:53:27
【问题描述】:
我有 2 个单独的模型,它们由 2 个不同的 API 调用填充。我一个接一个地获取它们,一旦模型 api 调用都完成并且我的视图可用(然后触发延迟解析),我就有了我的视图渲染逻辑,即将数据写入视图
下面是代码;
var myModel1 = new myModel1({
attr1: attr1
});
var myModel2 = new myModel2({
attr2: attr2
});
myModel1.fetch({
success: function() {
myModel1Deferred.resolve(myModel1);
}
});
myModel2.fetch({
success: function() {
myModel2Deferred.resolve(myModel2);
}
});
require(['view/my-view'], function(myView) {
myViewDeferred.resolve(myView);
});
$.when(myModel1Deferred, myModel2Deferred, myViewDeferred).then(function(myModel1, myModel2, myView) {
// My view rendering logic
}
现在的问题是有两种不同的情况(基于视图的访问方式):
- 在第一种情况下,我有两个模型 API 调用...所以在这种情况下,解析将取决于 myModel1Deferred + myModel2Deferred + myViewDeferred
- 但在第二种情况下,我只需要一个模型 API 调用(即 myModel1.fetch())...所以在这种情况下,解析将仅取决于 myModel1Deferred + myViewDeferred
我的问题是我应该有一个 if 条件并为每个条件分别编写 $.when().then() 还是可以在单个 $.then().when() 内处理。
【问题讨论】:
标签: javascript jquery jquery-deferred deferred