Promise承诺对象

Promise()是一个构造函数,通过new调用来创建一个承诺对象,承诺对象主要用于封装异步操作。
一个承诺对象主要有三种状态
承诺发起 pending
承诺成功 resolved
承诺失败 rejected
只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。

1) 获取或者创建一个承诺对象

let promise = new Promise(function(resolve,reject){
			//异步操作
			//当异步操作成功的时候执行resolve(),就可以将承诺的状态由
			//pending -> resolved
			
			//当异步操作失败的时候执行reject(),就可以将承诺的状态由
			//pending -> rejected
			
			//resolve()和reject()这两个方法里面可以传参,参数为异步处理的结果,最后会将参数传递给then()等方法。
		})
		
		

当promise实例产生,这个Promise中的回调函数就会执行。通过then方法监听承诺对象状态的改变。

2) 使用承诺对象

Promise.prototype.then(successHandler[,errorHandler])
successHandler 当承诺成功的时候执行
errorHandler 当承诺失败的时候执行
一般不再then方法中添加errorHandler,而是将errorHandler放到catch中

返回值为当前promise实例
Promise.prototype.catch(errorHandler)
errorHandler 当承诺失败的时候执行
Promise.prototype.finally(handler)
handler 不管承诺对象的状态变为什么样子,这个handler函数都会执行

3) 高级特性

1. Promise.all([p1,p2,…])
将多个承诺对象合并为一个承诺对象,返回值为promise

promise .then((result)=>{ 
			//当所有的承诺都resolved的时候该回调函数才会执行 
			// result 为每个承诺对象返回值组成的一个数组 
			}) 
			.catch(()=>{ 
			//当有一个承诺对象rejected就会执行这个回调函数 
			}) 

2. Promise.race([p1,p2,…])

将多个承诺对象合并为一个承诺对象,返回值为promise

promise .then((result)=>{
 			//只要有一个承诺对象的状态变为resolved,就会执行该回调函数 
			 }) 
 		.catch(()=>{
 			 //只要有一个承诺对象的状态变为rejected,就会执行该回调函数 
 			 }) 

3.Promise.any([p1,p2,…])
将多个承诺对象合并为一个承诺对象,返回值为promise
Promise.any()跟Promise.race()方法很像,只有一点不同,就是不会因为某个 Promise 变成rejected状态而结束。
4. Promise.resolve(v)
将v转换为承诺对象
可以将一个对象转换为一个承诺对象
5. Promise.reject(v)
返回一个状态为rejected的承诺对象

	在开发中我们用到的axios是基于promise机制的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值