如何實現一個 promise

 實現一個簡單得promise

        /** 
         * @resolveCallbackAall 存放所有成功回調
         * @rejectCallbackAall  存放所有失敗回調
         */
        let promise = function (promiseCallback) {
            let resolveCallbackAall = [];
            let rejectCallbackAall = [];

            this.then = (res) => {
                resolveCallbackAall.push(res);
                return this;  // 這裏只是爲了可以鏈式寫法 應該返回一個新的 promise
            };

            this.catch = function (err) {
                rejectCallbackAall.push(err);
                return this; // 這裏只是爲了可以鏈式寫法 應該返回一個新的 promise
            };

            resolve = (data) => {
                setTimeout(() => {
                    resolveCallbackAall.forEach(resolveCallback => {
                        resolveCallback(data);
                    })
                }, 0)
            }

            reject = (data) => {
                setTimeout(() => {
                    rejectCallbackAall.forEach(rejectCallback => {
                        rejectCallback(data);
                    })
                }, 0)
            }

            promiseCallback(resolve, reject)
        };

        function myfun(number) {
            return new promise((resolve, reject) => {
                if (number > 10) {
                    resolve(number);
                } else {
                    reject(number);
                }

            })
        }
        myfun(5).then(res => {
            console.log(res)
        }).catch(error => {
            console.log(error)
        })

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章