Promise源码分析

实现原理:说到底,Promise 也还是使用回调函数,只不过是把回调封装在了内部,使用上一直通过 then 方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些。

我这里只是实现了部分的功能,并非和源码一模一样!希望里面不足的地方,小伙伴们多多指正

//我们首先来定义一个MyPromise类,我在这里使用立即执行函数的方式,防止变量全局污染。
const MyPromise = (() => {
    // 定义三种状态
    const PENDING = "pending";
    const RESOLVED = "resolved";
    const REJECTED = "rejected";

    //这里使用Symbol定义不让外界访问的符号属性,状态和数据
    const PromiseResult = Symbol("PromiseResult")
    const PromiseState = Symbol("PromiseState")

    const changeStatus = Symbol("changeStatus")

    // 定义两个任务队列:成功的后续处理和失败后续处理
    const thenables = Symbol("thenables")
    const catchables = Symbol("catchables")

    const settleHandle = Symbol("settleHandle")

    return class MyPromise {
       
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值