promise.all与map嵌套?

let  data = await Promise.all(
     arr.map(async (ele) => {
          if (ele>0) {
               let result = await Promise.all([接口])
               return result;
               console.log(111111)
          } else {
               return ele;
          }
     }),
)
console.log(222222)

如题,我希望可以等待接口返回后再返回数组,但是却先打印出2222222222,在打印出1111111111111,请问要如何解决?

阅读 2.5k
3 个回答

期望使用 await 同步执行异步代码的时候,需要搭配使用 async,并不是单独使用 await
你现在let data = await Promise.all(... 的外部缺少了包裹整个执行代码的 async 函数。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
  1. 把接口调用变成 Promise 对象
  2. 把一组接口调用产生的 Promise 对象用 Promise.all 封装
  3. 等待 Promise.all 完成
const urls = [];
const promises = urls.map(url => fetch(url));
const allResult = await Promise.all(promises);

// 组合起来示意就是这样
const data = await Promise.all([接口函数].map(fn => fn()));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题