Promise实现原理

本文深入探讨了Promise的实现原理,包括其状态变迁、resolve和reject的角色、then方法的回调处理、异常捕获以及Promise.all()、Promise.resolve()、finally和catch等方法的使用。通过理解这些核心概念,读者能够更好地掌握Promise在处理异步操作中的应用。
摘要由CSDN通过智能技术生成

1.Promise的使用

Promise的使用

let promise = new Promise((resolve, reject) => {
   
    result('success')
    reject('error')
})

<!--promise.then(value => {
   -->
<!--  console.log(value) //success-->
<!--  return 100-->
<!--}, error => {
   -->
<!--  console.log(error)-->
<!--}).then(value => {
   -->
<!--  console.log(value) //100-->
<!--})-->

promise
  .then()
  .then()
  .then(value => {
   
    console.log(value)
  })

2.Promise实现原理

  1. Promise是一个类,接收一个执行器(函数)作为参数,执行器会立即执行
  2. Promise有三个状态 pending fulfilled rejected,状态一旦确定 不可更改
  3. resolve函数和reject函数的作用:改变状态
  4. then方法中判断promise的状态,如果是成功 调用resolve,如果是失败 调用reject
  5. then方法中的回调函数是有参数的,成功回调的参数是异步任务执行成功后的值,失败回调的参数是失败的原因
  6. promise的then方法可以被多次调用
  7. then方法可以链式调用,即then方法需要返回一个promise对象
  8. 下一个then方法回调函数的参数,是上一个then中回调函数的返回值
  9. 如果上一个then中返回的是一个普通值,直接调用resolve,并且把这个返回值作为resolve的参数;
    如果返回的是一个promise对象,判断他的状态来决定调用resolve还是reject(第4步)
  10. then方法中回调函数的返回值不能是当前then返回的promise对象,即promise的循环调用是不被允许的
  11. promise需要能捕获执行过程中发生的错误,包括promise执行器中的错误,和then方法中发生的错误
  12. then方法的参数是可选的,如果then没有参数,promise状态会一直向下传递,直到传递给有参数的then方法
  13. Promise.all()用来解决异步并发问题,他允许我们按照异步操作调用的顺序,得到异步操作执行的结果
  14. Promise.resolve()用来将给定的值转换成promise对象并返回,这个值可以是普通值,也可以是promise对象
  15. finally方法,参数是一个回调函数,不管当前promise成功还是失败,finally中的函数都会执行一次,并返回一个promise,可以调用then方法 拿到当前promise执行的结果
  16. catch方法,参数是当前promise的失败回调,成功回调默认为undefined

Promise实现

const PENDING = 'pending'
const FULFILLED = 'fulfilled'
const REJECTED = 'rejected'

class 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值