[英]How to handle nested jquery deferred calls
我有一个函数来获取一些数据,函数应该返回一个promise。 在函数中,我必须一个接一个地提出2个请求。 我最终得到了一个嵌套的deferrer调用,其中最后一个调用在函数将返回的延迟器上resolves
。 我是这个推迟的东西的新手,并想知道这是否是正确的解决方案。
function getData(func) {
var model = new Model();
var collection = new Collection();
var dfd = new jQuery.Deferred();
collection.fetch().then(function () {
model.fetch().then(function () {
dfd.resolve(collection);
});
});
return dfd.then(function (collection) {
return getViews(func(collection), model);
});
}
如果调用的顺序无关紧要,我建议使用http://api.jquery.com/jQuery.when
when
你可以制作并行的xhr请求时。
安德烈亚斯,我看到你已经非常正确地接受了维塔利的答案,我并不是想偷他的分数,但万一你不知道,没有必要创建和解决你自己的$.Deferred()
并且没有必要通过collection
周围(除了func()
),因为它仍然在范围内。
据我在问题中的代码中可以看出,以下内容应该有效:
function getData(func) {
var collection = new Collection();
var model = new Model();
return $.when(collection.fetch(), model.fetch()).then(function() {
return getViews(func(collection), model);
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.