Twlig / issuesBlog

MIT License
3 stars 0 forks source link

手写Promise.race #94

Open Twlig opened 2 years ago

Twlig commented 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)
            })
        })
    })
}