3-6 实现一个 Promise.allSettled 方法
/** * 实现一个 Promise.allSettled 方法 * @param {*} list * @returns [ { status: 'fulfilled'| 'rejected', value(fulfilled) | reason(rejected) } ] */ function myPromiseAllSettled(list) { const result = []; let count = 0; return new Promise((reslove, reject) => { list.forEach((promise, index) => { promise.then((res) => { const succeed = { status: 'fulfilled', value: res } result[index] = succeed; count++; },(err)=> { const error = { status: 'rejected', reason: err } result[index] = error; count++; }) .finally(() => { if(count >= list.length) { reslove(result) } }) }) }) } // test const promise1 = Promise.resolve(3); const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo')); const promises = [promise1, promise2]; myPromiseAllSettled(promises). then((results) => results.forEach((result) => console.log(result)));
本文作者:林见夕
本文链接:https://www.cnblogs.com/ifon/p/15971188.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步