ES6中的Promise
程序员文章站
2022-07-03 09:49:37
...
1.什么是Promise??
promise就是异步编程的一种解决方案。
特点:
1、对象的状态不受外界影响, promise对象代表一个异步操作,有三种状态
pendding(进行中),
fulfilled(成功),
rejected(失败)
2、一旦状态改变,就不会再变, 状态的改变只有两种可能,
**pendding** => **fulfilled**
及
**pendding** => **rejected**
基本用法
const promise = new Promise(function(resolve, reject){
// ... some code
if(/* 异步操作成功 */){
resolve(value);
// 将状态从pendding变成fulfilled
}else{
reject(error);
// 将状态从pendding变成rejected
}
});
promise 生成实例后可以使用then方法接收resolved状态和rejected状态的回调函数
promise.then(()=>{
console.log('resolved')
},()=>{
console.log('rejected')
})
promise原型上具有catch方法, catch方法是rejection的别名, 用于指定发生错误时的回调函数
promise.then(()=>{
console.log('resolved')
},()=>{
console.log('rejected')
}).catch((err)=>{
console.log('catch')
})
promise原型上具有finally方法,用于不管promise对象最后的状态如何,都会执行的操作
promise.then(()=>{
console.log('resolved')
},()=>{
console.log('rejected')
}).finally((err)=>{
console.log('end')
})
Promise.all
Promise.all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例
const p =Promise.all([p1,p2,p3]);
all的特点:
-
参数都是promise实例,如果不是会调用promise.resolve方法将其转为promise实例
-
p的奖态由传入的promise实例的状态决定
promise实例状态都变成fulfilled,p状态为fulfilled
promise实例状态一个变成rejected,p状态为rejected