promiseAll 拓展

72 阅读1分钟

Promise.all = (arr) => { return new Promise((resolve,reject) => { let res = []; let count = 0; for(let i = 0;i<arr.length;i++){ // arr[i] 可能并不是每一项都是promise 因此可以直接转化未promise Promise.resolve(arr[i]) .then((value) => { res[i] = value; count++; if(count === arr.length) { resolve(res) } }) .catch((reason) => { reject(reason) }) }

})

}

Promise.prototype.finally = function(callback) { return this.then((value) => { return Promise.resolve(callback()).then(() => value) },(err) => { return Promise.resolve(callback()).then(() => { throw err }) }) }

/*** *

  • 他接受一个参数,是一个数组

    整体返回值是一个promise

*/