87,987
社区成员
发帖
与我相关
我的任务
分享我有如下的一段代码:
...;
list_a.forEach(function(aaa){
$.ajax({
...,
success: function(bbb){
list_b.forEach(functioin(ccc){
$.ajax({
...,
success: function(data){...}
})
})
}
})
})
我应该如何在所有的data 都拿到之后 再进行其他操作?
我的想法是把第二层的ajax封装到promise中,再经过promis.all方法拿到所有的data数据,但是不知道怎么实现,请大佬们赐教!!
function ajax(options) {
return new Promise(function(success, error) {
$.ajax({
...options,
success,
error,
});
});
}
const list_a = [1,2,3,4];
const list_b = ['a', 'b', 'c', 'd'];
Promise.all(list_a.map(function(aaa) {
return ajax({
// ...
}).then(function(bbb) {
return Promise.all(list_b.map(function(ccc) {
return ajax({
// ...
}).then(function(data) {
// ...
return data;
});
}));
});
})).then(function(all) {
// completed
console.log(all);
});
var promiseList = [];
promiseList.push(new Promise(function (resolve, reject) {
setTimeout(() => {
resolve("resolve for 2s");
}, 2000);
}))
promiseList.push(new Promise(function (resolve, reject) {
setTimeout(() => {
resolve("resolve for 5s");
// reject("reject for 5s"); // reject会将异常抛出
}, 5000);
}))
Promise.all(promiseList).then(res => {
console.log(res); // 5s后打印 有一个失败则为失败,不会被执行
})