思考:
1.promise.all 接受参数是可迭代对象 ,获取长度不能用length ,size
2.接受的参数每一个都是一个promise,不是也要包装成一个promise ,返回是一个新的promise
3.全部成功 按照次序返回成功结果数组,一个失败,直接返回失败
promise.myAll = function(params){
let p = new Promise((resolve, reject) => {
let result = []
let len = 0
for(let i of params){
const index = len
len++
Promise.resolve(i).then(res => {
result[index] = res
len --
if(len === 0){
resolve(result)
}
}).catch(err => {
reject(err)
})
}
if(len === 0){
resolve([])
}
})
return p
}
const promise1 = new Promise(resolve => setTimeout(() => resolve('foo'), 3000));
const promise2 = new Promise(resolve => setTimeout(() => resolve('bar'), 2000));
const promise3 = new Promise((resolve, reject) => setTimeout(() => reject('baz'), 1000));
promise.myAll([promise1, promise2, promise3])
思考:
1.promise.race接受参数是可迭代对象 ,获取长度不能用length ,size
2.接受的参数每一个都是一个promise,不是也要包装成一个promise ,返回是一个新的promise
3.第一个返回结果为最终结果 成功就是成功 失败就是失败
Promise.myRace = function(params){
let p = new Promise((resolve, reject) => {
for(let i of params){
Promise.resolve(i).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
}
})
return p
}