我如何调用一个函数后,我的ajax调用函数完成
How do I call a function *after* my ajax call functions complete?
我正在使用jQuery运行一些ajax:
var stuff = {};
function do_stuff(thing){
stuff[thing.id] = thing;
}
function fun(){
var calls = [];
for(var i = 0; i < 10; i++){
var call = $.get(URL, function(data){
do_stuff(data);
});
calls.push(call);
}
$.when(calls).done(function(){
console.log(stuff);
});
}
我用的是$.when
,但我得到的是{}
,而不是我期望的数据。当我在Chrome中设置一个断点时,log
行在任何do_stuff
调用之前被调用-所以显然调用的顺序混淆了。是否有一种方法可以确保console.log(stuff)
行在我的get回调后被调用 ?
您应该阅读延迟对象:http://api.jquery.com/category/deferred-object/
你使用$.when
是正确的,但它接受延迟对象的参数。所以在现实中你需要$.when(calls[0], calls[1], ...)
这样的东西。这有点麻烦,所以幸运的是可以使用javascript函数.apply
并得到类似的东西:
$.when.apply(null, calls).done(function() {
console.log(stuff);
}
相关文章:
- 如何从模块链中调用函数.导出到节点中
- 调用函数内部的函数
- 在javascript中调用c函数
- DropDownListFor赢得't在更改时调用函数
- Javascript页面调用函数
- 在动画结束之前调用函数
- 允许父窗口在其不同域的子iframe上调用函数
- 运行Infinite Scroll后调用函数时出现问题
- JavaScript:在调用函数的文本输入上按enter键
- 使用大括号和不使用bracs调用函数的区别
- javascript在事件上调用函数
- 从index.html调用函数,该函数无限循环
- 从带参数的字符串变量调用函数中的函数
- 为什么 JS 不在滚动时调用函数
- 是否可以在不更改上下文的情况下调用函数.apply
- 如何在ES6类中使用参数调用函数
- AngularJS:调用函数时编号不更新
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 在JavaScript中调用函数时自定义此选项
- 调用函数中声明的变量