手寫實現Promise的全部功能

2022-09-10 06:18:13 字數 1458 閱讀 4612

發現的問題

在此過程中,發現 自己對 函式中的this指向,和詞法環境 的一些細節沒有掌握好,實現過程很痛苦!

解決

應該惡補

下面上**

1

function

promise(executor));16}

17} 18}

1920

function

reject(data));

31} 32}

3334}35

executor(resolve,reject);36}

37 promise.prototype.then = function

(onresolve,onreject)40}

41if(typeof onresolve !== 'function')43}

44var self = this;45

46return

new promise((resolve,reject)=>catch

(e)53

if(result instanceof

promise),reason =>)

59 }else62}

63if(this.promisestate == 'fulfilled')

66if(this.promisestate == 'rejected')

69if(this.promisestate = 'pending')75,

76 onreject:function

()79}80

);81}82

});8384}

8586 promise.prototype.catch = function

(onreject)

8990 promise.resolve = function

(value));94}

9596 promise.reject = function

(reason));

100}

101102 promise.all =function

(parr)

121},

122 reason=>);

125}

126//

parr.foreach(function (item,index)

135//

console.log('1');

136//

},reason =>);

140//

});141

});142

}143

144 promise.race = function

(parr),r=>);

152})

153})

154 }

手寫實現bind

bind 方法會建立乙個新函式。當這個新函式被呼叫時,bind 的第乙個引數將作為它執行時的 this,之後的一串行引數將會在傳遞的實參前傳入作為它的引數。來自於 mdn 由此我們可以首先得出 bind 函式的兩個特點 返回乙個函式 可以傳入引數 返回函式的模擬實現 從第乙個特點開始,我們舉個例子 ...

手寫Promise實現過程

手寫promise實現過程 定義好mypromise的三種狀態,用三個常量來接收 const pending pending 等待 const fulfilled fulfilled 成功 const rejected rejected 失敗 class mypromise catch e mypr...

手寫實現RPC 框架

乙個簡易的rpc框架,別的先不多說上github github gitee 註冊中心 zookeeper 使用curator 操作 通訊框架 netty 4.1.25版本 序列化 kryo 以下只寫了大體專案流程,以及展示部分 具體上方github 裡基本都寫了注釋 本rpc框架,有乙個統一的 框架...