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就实现了 

  • 相关阅读:
    二分法查找递归方式()
    JDBC操作MySQL(crud)
    (转)JAVA中的权限修饰符
    抽象类和接口(面试题总结)
    java基础-集合
    Java泛型通配符以及限定
    div中嵌套的多个div使用了浮动后居中的办法
    将博客搬至CSDN
    (补)Java解析XML之dom4j
    Java单元测试
  • 原文地址:https://www.cnblogs.com/wsjaizlp/p/11205463.html
Copyright © 2011-2022 走看看