Appearance
Promise.all 1
本节目标:理解“Promise.all 1”的核心思路,并能把它用于实际开发或面试表达。
//Promise.all的特点 就是全成功才成功,有一个失败就是失败。 执行结果是有顺序的
MyPromise.all= function
(promises){return new
Promise((resolve,reject)=\> {const arr = [];let times =
0; `const` `processResult` `=`
(i,val)=\> {
arr[i]=
val;// 计数器就是解决异步并发问题 if
(++times===
promises.length){
resolve(arr); `}`
`}`
`for`
(leti =
0;i \<
promises.length;i++){let val =
promises[i];// 怎么让一个promise执行? p.thenif
(typeofval.then===
'function'){ // 是promise
val.then(val=\>
processResult(i,val),reject) `}` `else` `{`
processResult(i,val) `}`
`}`
})
}
MyPromise.all([readFile('./a.txt'),readFile('./b.txt'),1,false]).then(data=\> {
console.log(data)
}).catch(err=\> {
console.log(err);
})