$.when.apply.done 不执行异步函数
$.when.apply.done not executing asynchronous functions
我必须在所有异步函数完成执行后执行一个回调函数。
为此,我创建了一个包含异步函数的数组:
var funcs = [];
var requests = [];
我在其中推送了一些 ajax 函数。
这是我的解决方案,它不起作用:
for(i = 0; i < functions.length; i++){
var f = functions[i](); //calling each ajax functions
requests.push(f);
}
$.when.apply(null, requests).done(function(){
console.log("Hello");
});
现在函数正在异步执行,但在函数执行完成之前调用回调函数。
我推送的 ajax 函数示例之一:
functions.push(function () {
return $.ajax({
url: "some url",
success: function(){
console.log("Finished execution");
}
});
您的匿名函数没有return
,因此其有效返回值为 undefined
。
因此,首先您需要修复匿名函数以包含return
:
functions.push(function() {
return $.ajax(...);
});
您还可以对调用循环进行更简洁的实现:
var requests = functions.map(function(f) {
return f();
});
$.when.apply($, requests).done(callb);
相关文章:
- 带延迟串行执行异步函数
- 单击链接时执行异步AJAX调用,然后跟随该链接
- 我们可以使用Jasmine在测试中执行异步操作吗
- 如何在循环中对 es6 生成器执行异步任务
- $.when.apply.done 不执行异步函数
- 了解在Selenium中执行异步脚本
- setTimeout 是使用 javascript 执行异步函数的好解决方案吗?
- 如何在 $ 中执行异步操作.延迟,然后失败过滤回调并传递回成功链
- 如何使用 Q.js 在循环中执行异步函数
- 执行异步代码时;退出“;事件
- 如何按顺序执行异步Mocha测试(NodeJS)
- 一个接一个地执行异步进程
- 在调用函数之前执行异步调用
- 在NodeJ中执行异步卷曲的最佳方式
- 正在同步执行异步函数
- 在Express2.x中的dynamicHelper(或其他选择)中执行异步调用
- 如果执行异步操作,将产生表达式块
- 执行异步操作后的函数
- Angular在ng-click中执行异步函数
- 承诺:如何并行执行异步方法,然后执行方法