Open Twlig opened 2 years ago
其实手写Promise.race和all差不多,只不过race是返回完成的第一个Promise的值。还有一个重点在于,要对传入race的参数做一个Promise包装,不然传入的很可能是race([3,5,6])这种数据,这不是promise类型,无法调用then方法。
function race(arr) { if(arguments.length > 1) { console.log('参数过多') return } return new Promise((resolve, reject) => { arr.forEach(item => { Promise.resolve(item).then(value => { resolve(value) }, err => { reject(err) }) }) }) }
其实手写Promise.race和all差不多,只不过race是返回完成的第一个Promise的值。还有一个重点在于,要对传入race的参数做一个Promise包装,不然传入的很可能是race([3,5,6])这种数据,这不是promise类型,无法调用then方法。