zoukankan      html  css  js  c++  java
  • 手写一个promise

    promise是什么?

    promise是一个解决回调地狱的函数,是一个强大的异步回调方案。es6将其弄可以直接使用!

    我们知道promise中共有三种状态

    pending 过渡态
    fulfilled 完成态
    rejected 失败态

    function Promise(exector) {
                let self = this;
                //status表示一种状态
                let status = "pending";
                let value = undefined;
                let reason = undefined;
                //成功执行
                function resolve(value) {
                    if (status == 'pending') {
                        self.value = value;
                        self.status = "resolve";
                    }
                }
                //执行失败
                function reject(reason) {
                    if (status == 'pending') {
                        self.reason = reason;
                        self.status = "reject"
                    }
                }
                //对异常操作
                try {
                    exector(resolve, reject)
                } catch (e) {
                    reject(e)
                }
                //设置promise的then方法
                Promise.prototype.then = function(reject, resolve) {
                    let self = this;
                    if (this.status == 'resolve') {
                        reject(self.value)
                    }
                    if (this.status == 'reject') {
                        resolve(self.reason)
                    }
                }
            }
            //new 一个promise  进行测试  
            let promise = new Promise((reject, resolve) => {
                resolve("return resolve");
            });
            promise.then(data => {
                console.log(`success${data}`);
    
            }, err => {
                console.log(`err${err}`);
    
            })

    简单 的 promise就实现了 

  • 相关阅读:
    三角形外接圆与内切圆
    不等式证明
    不等式证明
    被 6 整除
    被 6 整除
    从切比雪夫不等式到大数定理
    JAVA轻量级文件监控
    Windows应用程序的消息处理机制
    JUnit中@Test的运行顺序
    MyReport报表引擎2.2.0.0新功能
  • 原文地址:https://www.cnblogs.com/wsjaizlp/p/11205463.html
Copyright © 2011-2022 走看看