如何处理嵌套的jquery延迟调用
How to handle nested jquery deferred calls
我有一个函数来获取一些数据,该函数应该返回一个承诺。在函数中,我必须提出2个请求-一个接一个。我最终使用了一个嵌套的延迟调用,其中延迟上的最后一次调用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);
});
}
Andreas,我看到你已经非常正确地接受了vity的答案,我并不是想窃取他的观点,但以防你不知道,没有必要创建和解决你自己的$.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);
});
}
如果调用的顺序无关紧要,我建议使用http://api.jquery.com/jQuery.when
使用when
你可以使并行的xhr请求
相关文章:
- jQuery延迟了ajax调用的循环
- jQuery延迟怪异
- 使用jquery延迟对象链接多个ajax调用
- 将额外的参数传递给jquery.延迟回调
- jQuery addClass中断延迟,或者jQuery延迟中断CSS转换,或者两者兼而有之
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- jQuery 延迟的 AJAX 调用返回值
- 使jquery延迟加载插件在视口内工作
- jQuery 延迟使用一系列函数
- jQuery延迟了链接保存,统一结果
- Jquery延迟未按预期运行
- Jquery延迟脚本的执行
- 鼠标输入事件上的jQuery延迟出现问题
- 如何停止基于jQuery延迟定时器的动画
- jQuery延迟音量In
- jQuery延迟/暂停动画
- Javascript (Mobile) - 使用 jquery 延迟加载图像
- jQuery 延迟不算作动画
- 使用 jQuery 延迟对象管理 ajax 调用
- 每个循环的 JQuery 延迟对后置请求不起作用