【问题标题】:how to have one onsuccess call for multiple ajax call如何对多个 ajax 调用进行一次 onsuccess 调用
【发布时间】:2013-09-16 11:01:14
【问题描述】:

我有一个问题,我必须调用多个 AJAX 请求,我想编写一个回调,当所有请求都完成后,该回调只会被调用一次。我可以有多个 ajax 调用,所以我可能不喜欢像 here 那样将这些 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;
    }
}

我对这个解决方案感觉不太好。大家怎么看?如果这不是一个好的解决方案,我可以为解决这个问题提供一些好的建议吗?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

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

    或

    2) 如果您不想使用它,您可能需要执行以下操作:

    • 实现保存发送的 ajax 请求数量的自定义对象
    • 在全局范围内创建一个实例
    • 使用 allFinished 回调提供实例
    • 让每个ajax响应回调减1
    • 当数量达到 0 > 运行 allFinished 回调

    【讨论】:

    • 谢谢,但我不能使用 jQuery。对于您的第二个解决方案,它看起来很像我尝试过的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多