javascript 介绍下promise的特性、优缺点,内部是如何实现的,动手实现Promise

  1. Promise基本特性
    1)Promise有三种状态: pending(进行中)、fulfilled(已成功)、rejected(已失败)
    2)Promise对象接受一个回调函数作为参数,该回调函数接受两个参数,分别是成功时的回调resolve和失败的时候回调reject,另外resove的参数除了正常值以外,还可能是一个Promise对象的实例;reject的参通常是一个Error对象的实例
    3)then方法返回一个新的Promise实例,并接收两个参数onResolved(fulfilled状态的回调);onRejected(rejected状态的回调,该参数可选)
    4)catch方法返回一个新的Promise实例
    5)finally方法不管Promise状态如何都会执行,该方法的回调函数不接受任何参数
    6)Promise.all()方法将多个Promise实例,包装成一个新的Promise实例,该方法接受一个由Promise对象组成的数组作为参数(Promise.all()方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例),注意参数中只要有一个实例触发catch方法,都会触发Promise.all()方法返回的新的实例的catch方法,如果参数中的某个实例本身调用了catch方法,将不会触发Promise.all()方法返回的新实例的catch方法
    7)Promise.race()方法的参数与Promise.all方法一样,参数中的实例只要有一个率先改变状态就会将该实例的状态传给Promise.race()方法产生的Promise实例的返回值
    8)Promise.resolve()将现有对象为Promise对象,如果该方法的参数为一个Promise对象,Promise.resolve()将不做任何处理;如果参数thenable对象(即具有then方法),Promise.resolve()将该对象转为Promise对象并立即执行then方法;如果参数是一个原始值,或者是一个不具有then方法的对象,则Promise.resolve方法返回一个新的Promise对象,新动态为fulfilled,其参数将会作为then方法中onResolved回调函数的参数,如果Promise.resolve方法不带参数,会直接返回一个fulfilled状态的Promise对象。需要注意的是,立即resolve()的Promise对象,是在本轮"事件循环"的结束时执行,而不是在下一轮"事件循环"的开始时。
    9)Promise.reject()同样返回一个新的Promise对象,状态为rejected,无论传入任何参数都将作为reject()的参数
  2. Promise优点
    1)统一
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值