手寫一個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就實現了 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM