文章 评论 浏览 31
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); });
推荐一篇文章:https://juejin.im/post/5db2beb8e51d455b450a64b4
文章 0 评论 0
接受
第 80 题:介绍下 Promise.all 使用、原理实现及错误处理