Javascript 如何在解析承诺之前合并响应数组并运行多个ajax调用
我在循环中嵌套了ajax。现在我想将返回的ajax合并到一个数组或单个对象中。谢谢Javascript 如何在解析承诺之前合并响应数组并运行多个ajax调用,javascript,php,jquery,laravel,Javascript,Php,Jquery,Laravel,我在循环中嵌套了ajax。现在我想将返回的ajax合并到一个数组或单个对象中。谢谢 $.each(res.data, function (key, value) { SerialNumber = value['serial']; Code = value['code_history'][0]['gift_code']; return new Promise((resolve, reject)=>{ $.ajax({ type:
$.each(res.data, function (key, value) {
SerialNumber = value['serial'];
Code = value['code_history'][0]['gift_code'];
return new Promise((resolve, reject)=>{
$.ajax({
type: "POST",
data: "Code=" + Code + "&action=cameraInfo_more" + "&SerialNumber=" + SerialNumber,
url: "ajax/get-customer-info-params",
cache: false,
dataType: "json",
success: function (res_more) {
temp2 = res_more.data[0];
//-- i want merge all json res_more to 1 array
}
})
})
})
}
您使用的是$.each,但如果使用
Array.prototype.map
,您将得到一个承诺数组。将其馈送到Promise.all,然后等待它返回
下面是一个例子:
Promise.all(res.data.map(value => {
SerialNumber = value['serial'];
Code = value['code_history'][0]['gift_code'];
return new Promise((resolve, reject)=>{
$.ajax({
type: "POST",
data: "Code=" + Code + "&action=cameraInfo_more" + "&SerialNumber=" + SerialNumber,
url: "ajax/get-customer-info-params",
cache: false,
dataType: "json",
success: function (res_more) {
resolve(res_more.data[0]);
}
})
})
})).then(x => {
console.log(x);
});
你试过康卡特吗。在每个循环之前声明空数组。让temp2=[]和进入success函数。temp2.concat(res_more.data[0]);您可以在数组中推送ajax调用,然后使用promise.all来解决它。你能参考这篇文章的答案吗?你能帮我举个例子吗?当然,给你:)