整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
ES6 promise.all
const promise1 = Promise.resolve("a1")
const promise2= Promise.resolve("a2")
const promise3 = Promise.resolve("a3")
const promise4 = Promise.reject("b1")
const runPromise = async() =>{
const res1 = await Promise.all([promise1,promise2])//flag1
const res2 = await Promise.all([promise3,promise4])//flag2
return [res1,res2]
}
runPromise()
.then(res=>console.log(res))
.catch(err => console.log(err))//b1
这题的主要问题是
为什么这几个promise最后只打印了b1?
flag1处:有2个并行的成功promise操作
flag2处:有1个成功的promise操作和一个失败promise操作
这里promise.all 的作用是所有的异步操作全部结束后才会执行,
下一步的.then操作,也称为等待机制。
其中返回一个promise对象只有所有的promise都成功才成功,只要由一个失败就直接失败,而async函数也是返回一个promise对象,由此可以判断这个函数是执行reject回调。
也可以这样立即.catch把错误吃掉了,因为promise3这个promise对象并没有处理错误信息。