欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的特点:

  1. 参数都是promise实例,如果不是会调用promise.resolve方法将其转为promise实例

  2. p的奖态由传入的promise实例的状态决定
    promise实例状态都变成fulfilled,p状态为fulfilled
    promise实例状态一个变成rejected,p状态为rejected