Promise有以下两个特点:
①对象的状态不守受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中) fulfilled(已成功) rejected(已失败)
②一旦状态改变,就不会再变,任何时候都可以得到这个结果。
用法:
let p =new Promise((resolve,reject)=>{
里面传成功的结果resolve/失败的结果reject
});
p.then(()=>{成功的回调}.catch(()=>{失败的回调})
catch接受失败的回调和异常
链式调用
then()内部的返回值:
非Promise 会作为参数传递下一个then成功的回调
Promise 会成为下一个then的Promise
Promise方法:
Promise.all()
该方法用于多个Promise实例,包装成一个新的Promise实例
例:const p =Promise.all([p1,p2,p3])
①只有p1,p2,p3都成功,则新的Promise立即变成为成功状态
②若p1,p2,p3有1个失败,则新的Promise就会变为失败状态
Promise.race()
该方法用于多个Promise实例,包装成一个新的Promise实例
新的Promise状态取决于先返回的值 先返回成功 则新的Promise立即变成为成功状态;
若子安返回失败 则新的Promise就会变为失败状态
注:all的结果Promise数据组成的数组 race的结果为第一个返回的值