const resolved = Promise.resolve(42); const rejected = Promise.reject(-1); const allSettledPromise = Promise.allSettled([resolved, rejected]); allSettledPromise.then(function (results) { console.log(results); }); // [ // { status: 'fulfilled', value: 42 }, // { status: 'rejected', reason: -1 } // ]Promise.all()只有当所有入参的promise实例都是fulfilled状态,才会在Promise.all().then()方法中结果,返回结果也是与入参一一对应,结果中只包含实际的resolve的结果
5、用promise.all实现promise.allSettled
Promise.allSettled = function(list) { if (list instanceof Array) { let res = []; list.forEach((i) => { res.push( new Promise(function(resolve, reject) { i.then((v) => { resolve({state:true, data: v}); }).catch((e) => { reject({state: false, data: e}); }); }) ); }); return Promise.all(res); } return Promise.reject();
Promise.all()接受一个promise对象的数组,当所有promise对象都变成resolve状态或者有一个变成reject状态时,才会调用then方法 Promise.all()接受一个promise实例的数组或者... functionpromiseAll(promises) { .
Promise.all()接受一个promise对象的数组,当所有promise对象都变成resolve状态或者有一个变成reject状态时,才会调用then方法Promise.all()接受一个promise实例的数组或者Iterator接口的对象如果元素不是promise对象,使用promise.resolve转为Promise对象Promise.all()的返回值也是一个Promise对象

实现Promise.all方法

functionpromiseAll(promises){returnnewPromise((resolve, reject)=>{if(!Array.isArray(promises)){returnreject(newError("Promise must be an array"));}var resolvedCount=0;var promiseNum= promises.length;var resolveValue=[];for(let i=0; i