使用Javascript合并两个并行ajax调用的响应

时间:2016-05-18 15:59:19

标签: javascript ajax xmlhttprequest

我想做两个并行的ajax调用,并且响应将从每个调用获得两个数组。我想合并这两个数组并在HTML中显示。什么是最好的方法。我们如何才能知道呼叫已完成或任何一个呼叫中断。只有在ajax调用成功完成时才会触发回调

2 个答案:

答案 0 :(得分:0)

以下代码将执行合并:

var result1 = ['a', 'b'];
var result2 = ['c', 'd'];
var mergedResult = result1.concat(result2);

修改

与此同时,您告诉我们,您不希望进行数组合并,而是同步ajax调用。我看到了一些解决方案:

  1. 如果您不需要支持所有浏览器,请使用promises,请参阅http://caniuse.com/#search=promise
  2. 如果您需要支持旧浏览器,我会推荐一个库。也许您已经使用过jQuery,或者您可以查看Lightweight implementation of promises以查看更轻量级的库。
  3. 您可以通过计算打开ajax调用来尝试“小”解决方案,当其中一个完成时减少计数器,并在计数器再次达到零后执行操作。我不建议这样做,但这是简单的方法。

答案 1 :(得分:0)

var p1 = new Promise(function(resolve, reject){
//Ajax call 1
resolve(response1)
})
var p2 = new Promise(function(resolve, reject){
//Ajax call 2
resolve(response2)
})

Promise.all([p1, p2]).then(function(values){
//Here we will get values of p1, p2
});