1.all
2.race
3.手写
1.all
Promise.all = function (promiseList) {
//返回结果为promise对象
return new Promise((resolve, reject) => {
//声明变量
let count = 0
let arr = []
//遍历
promiseList.forEach((item, index) => {
item.then(
(value) => {
count++
//将当前promise对象成功的结果存入到数组中
arr[index] = value
if (count == promiseList.length) {
//修改状态
resolve(arr)
}
},
(error) => {
reject(error)
}
)
})
})
}
2.race
Promise.race = function (promiseList) {
return new Promise((resolve, reject) => {
promiseList.forEach((item) => {
item.then(
(value) => {
resolve(value)
},
(error) => {
reject(error)
}
)
})
})
}