Open
Description
其实手写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)
})
})
})
}