演出会有结束

文章 评论 浏览 31

演出会有结束 2022-05-04 13:56:07
let Promise_all = async (Promise_Arr = new Array()) => {
  let results = [],
    errors = null;

  for (let i = 0; i < Promise_Arr.length; i++) {
    if (Promise_Arr[i] instanceof Promise) {
      Promise_Arr[i]
        .then((v) => {
          results.push(v);
        })
        .catch((err) => {
          errors = err;
        });
    } else {
      throw new Error("检测到非Promise的存在");
    }
  }
  return new Promise(async (resolve, reject) => {
    while (1) {
      await new Promise((resolve) => setTimeout(resolve, 100));
      if (errors != null) reject(errors);
      if (results.length == Promise_Arr.length) {
        resolve(results);
        break;
      }
    }
  });
};

Promise_all([
  Promise.resolve(1),
  Promise.resolve(2),
  new Promise(async (resolve, reject) => {
    await new Promise((resolve) => setTimeout(resolve, 3000));
    resolve(3);
  }),
  Promise.reject(4),
])
  .then((res) => {
    console.log("Promise_all", res);
  })
  .catch((err) => {
    console.log("Promise_all", err);
  });

Promise.all([
  Promise.resolve(1),
  Promise.resolve(2),
  new Promise(async (resolve, reject) => {
    await new Promise((resolve) => setTimeout(resolve, 3000));
    resolve(3);
  }),
  Promise.reject(4),
])
  .then((res) => {
    console.log("Promise.all", res);
  })
  .catch((err) => {
    console.log("Promise.all", err);
  });

第 80 题:介绍下 Promise.all 使用、原理实现及错误处理

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文