ES6 Promise原理

ES6 Promise原理一、Promise是什么二、为什么会有Promise1、回调地狱 + 异步同步事件调用顺序带来的双重伤害2、回调事件的分离三、Promise的三种状态1、resolve2、reject3、pending四、then catch all race1、then2、catch3、all4、race五、基本用法六、实现Promise一、Promise是什么A promise is an object that may produce a singe value some time in
摘要由CSDN通过智能技术生成

一、Promise是什么

A promise is an object that may produce a singe value some time in the future:either a resolved value ,or a reason that it’s not resolved .(e.g.,a network error occurred)
简单说就是一个异步实现的对象,它或者可以解决掉问题,或者可以给予一个未能解决掉这个问题的原因。

二、为什么会有Promise

1、回调地狱 + 异步同步事件调用顺序带来的双重伤害

promise是一个异步函数,并且它能够解决地狱回调。地狱回调简单理解为回调中嵌套回调,当回调的层数太多了就会看起来很混乱。当然如果promise的then太多了,那么我们可以使用Generator或async/await

2、回调事件的分离

then返回的是一个新的promise,它是通过之前的一个promise返回值的不同进行不同方法的调用。即如果上一个promise成功了就执行第一个方法,如果上一个未成功就执行第二个方法。

三、Promise的三种状态

1、resolve

将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;

2、reject

将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

3、pending

当前promise状态正在执行,状态只要改变,就会凝固不会再次变化,且方法只能被调用一次。

四、then catch all race

1、then

1、接收两个函数作为参数,分别代表resolve和rejected
2、.then()返回一个新的Promise实例,所以它可以链式调用
3、当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行
4、状态响应函数可以返回新的promise,或其他值,不返回值也可以我们可以认为它返回了一个null;
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
6、如果返回其他任何值,则会立即执行下一级.then()

2、catch

catch方法会捕捉catch前到上一个catch中间的,没有设置then的reject方法的reject.

	thing1()
	.then(()=>{
   
   		return thing2();   
    })
	.then(()=>{
   
      return thing3()
    })
	.catch((err)=>{
   
     	return err1() 
   })
	.then(()=>{
   
      return
  • 8
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值