如何对多个ajax调用进行一次onsuccess调用

时间:2013-09-16 11:01:14

标签: javascript ajax

我遇到一个问题,我必须调用多个AJAX请求,并且我想编写一个回调函数,只有在完成所有这些调用后才会调用它。我可以有多个ajax调用,所以我可能不喜欢在前一个回调的回调中将这些Ajax调用链接为here

所以我尝试过这样的事情 -

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 个答案:

答案 0 :(得分:0)

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

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

  • 实现保存发送的ajax请求数的自定义对象
  • 在全球范围内制作实例
  • 带有allFinished回调的provice实例
  • 使每个ajax响应回调减少数量为1
  • 当达到0的数量时>运行allFinished回调