【发布时间】:2018-07-13 05:17:31
【问题描述】:
我一直在尝试以异步模式调用多个 ajax 调用,然后等待所有 ajax 调用完成后再继续。 我正在使用 jquery .when()。
var results_array = [];
var num = 0;
var promises = [];
ldap_cmd_array.forEach(element => {
var myldap = ldap_data;
myldap.push({
"name": "cmd",
"value": element
});
console.log(++num);
promises.push(ajaxCall(myldap, 'aaa',
// success callback
function (data) {
console.log(--num);
results_array.push(data);
console.log('pass');
},
//error callback
function (err) {
//Do nothing
console.log(--num);
console.log('fail');
}
));
});
$.when.apply($, promises)
.then(function() {
console.log(results_array);
});
但在输出中,我看到 results_array 在所有 ajax 调用完成之前打印。我不确定我哪里出错了。需要帮忙?提前致谢。
注意:输出图像已附加。
【问题讨论】:
-
ajaxCall是否真的返回了一个承诺?如果不是,那将解释您所看到的。如果它确实返回了一个承诺,那么使用.then,而不是成功和错误回调。你只是让自己变得比需要的更复杂。 -
什么是
ajaxCall? (它看起来正在使用回调,如果您尝试将其用作 Promise,这不是一个好兆头) -
ajaxCall 是 aync() 吗?如果没有,则使其异步。在该调用中使用 await 以获得它的响应,然后再执行下一位。
-
这个对类似问题的回答能给你一些意见吗? stackoverflow.com/questions/13912775/…
标签: javascript ajax