请教一个promise.all相关的问题

那小子少根弦 2022-07-19 01:26:26

我有如下的一段代码:
...;
list_a.forEach(function(aaa){
    $.ajax({
        ...,
        success: function(bbb){
            list_b.forEach(functioin(ccc){
                $.ajax({
                    ...,
                    success: function(data){...}
                })
            })
        }
    })
})
我应该如何在所有的data 都拿到之后 再进行其他操作?
我的想法是把第二层的ajax封装到promise中,再经过promis.all方法拿到所有的data数据,但是不知道怎么实现,请大佬们赐教!!

...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2022-09-06
  • 打赏
  • 举报
回复
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);
});
aら 淼 2022-07-19
  • 打赏
  • 举报
回复
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后打印 有一个失败则为失败,不会被执行
})

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧