美文网首页
手写 Promise - 状态控制

手写 Promise - 状态控制

作者: bestCindy | 来源:发表于2020-08-15 10:59 被阅读0次
 const MyPromise = (() => {
    const PENDING = "pending",
        RESOLVED = "resolved",
        REJECTED = "rejected",
        //不能让外部访问
        PromiseValue = Symbol("PromiseValue"),//状态数据
        PromiseStatus = Symbol("PromiseStatus"),//当前状态
        changeStatus = Symbol("changeStatus");

    return class MyPromise {
        [changeStatus](newStatus, newValue) {
            if (this[PromiseStatus] != PENDING) {
                //状态无法变更
                return;
            };
            this[PromiseStatus] = newStatus;
            this[PromiseValue] = newValue;
        };

        // executor 未决阶段(pending 状态)下的处理函数
        constructor(executor) {
            this[PromiseStatus] = PENDING;
            this[PromiseValue] = undefined;

            const resolve = data => {
                this[changeStatus](RESOLVED, data);
            };

            const reject = reason => {
                this[changeStatus](REJECTED, reason);
            };

            try {
                executor(resolve, reject);
            } catch(err) {
                reject(err);
            };
        };
    };
})();

相关文章

  • 手写 Promise - 状态控制

  • 手写 Promise 系列 --- 2

    在上一篇 手写 Promise 系列 --- 1 中,我们达成了两个目标 Promise 实例的状态改变 [✅] ...

  • 手写Promise

    手写 Promise 我们会通过手写一个符合 Promise/A+ 规范的 Promise 来深入理解它,并且手写...

  • 手写 Promise 系列 --- 3

    在前两篇(手写 Promise 系列 --- 1)和(手写 Promise 系列 ---2) 中,达成了3个目标 ...

  • 手写Promise

    $ 正常的promise用法   $ 手写的Promise   # 测试可行性

  • 手写promise

    手写promise 带大家手写一个 promis。在手写之前我会先简单介绍一下为什么要使用promise、prom...

  • 纯手写实现自己的nodejs promise 库

    纯手写实现自己的nodejs promise 库什么是Promise?promise 链Async/Await后续...

  • 手写基础 promise

    1. 前言 玩下吧 手写 promise,看看能写成啥样 2. promise 基础结构 3. 手写`promi...

  • 手写 Promise

    一、Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 Promise 介绍和使用详见: 认识并使...

  • 手写Promise

网友评论

      本文标题:手写 Promise - 状态控制

      本文链接:https://www.haomeiwen.com/subject/hinndktx.html