Promise
1、Promise是一个对象,可以保存状态;
2、Promise内部有个状态机,初始状态为pending;
3、new Promise的参数是一个回调函数,该函数有两个参数resolve和reject,执行resolve函数会将状态从pending变为fulfilled,执行reject会将状态从pending变为rejected,状态变更不可逆;
4、then有两个参数,分别是resolve和reject的回调函数并在resolve的回调函数里return一个新的Promise对象,形成链式;
5、失败走then的第二个函数,若没有定义第二个函数,可以走catch,通过throw new Error('抛出错误了')抛出的错误走catch;
6、then里回调函数的参数是上一个then里的promise的resolve或reject返回值或者是直接return的返回值,若上一个没有return一个new Promise或者return一个具体值则拿到的是undefined;
7、catch可以拿到前几级返回的错误值;
8、throw new Error抛出错误后直接跳到catch并且throw和catch中间部分所有then默认不存在,,并从catch开始继续往下执行,并且catch不会影响后面的then接收前面then的值。
Promise.all([p1, p2, p3])用于将多个promise实例,包装成一个新的Promise实例,返回的实例就是普通的promise,它接收一个数组作为参数,当所有的子Promise都完成,该Promise完成,返回值是全部值得数组,有任何一个失败,该Promise失败,返回值是第一个失败的子Promise结果。
Promise.race() 类似于Promise.all() ,区别在于它有任意一个完成就算完成。常见用法:异步操作和定时器放在一起,,如果定时器先触发,就认为超时,告知用户。

浙公网安备 33010602011771号