如何让一个成功调用进行多个 AJAX 调用

how to have one onsuccess call for multiple ajax call

本文关键字:调用 AJAX 成功 一个      更新时间:2023-09-26

我有一个问题,我必须调用多个AJAX请求,我想编写一个回调,当所有请求都完成后,该回调只会调用一次。我可以有多个 ajax 调用,所以我可能不喜欢像这里发生的那样将这些 Ajax 调用链接在上一个回调的回调中。

所以我尝试了这样的事情——

var requestCompletedArray = [];
/* assuming i have `n` ajax calls to make */
for(var i = 0; i < n; i++) {
    ajaxCall(/* some url, data etc */, callback);
}
/* my callback definition */
function callback(data) {
    if(requestCompletedArray.length < n-1) {
        requestCompletedArray.push(data.status);
        return;
    } else if(requestCompletedArray.length === n-1) {
        //do something, all requests are completed
    } else {
        return;
    }
}

我对这个解决方案感觉不好。大家怎么看?如果这不是一个好的解决方案,我能不能有一些解决这个问题的好建议。

1) 看看 jquery 文档中的 $.when

2)如果你不想使用它,你可能想做这样的事情:

  • 实现保存发送的 AJAX 请求数的自定义对象
  • 在全局范围内创建实例
  • 具有全部完成回调的实例
  • 使每个 AJAX 响应回调数减少 1
  • 当数量达到 0 时>全部运行完成回调