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

  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/wsjaizlp/p/11205463.html
Copyright © 2011-2022 走看看