手寫Promise結構的設計和then方法

2022-10-09 09:24:14 字數 988 閱讀 6738

1:結構的設計

主要思路:

建構函式 class----就可以new來呼叫

利用constructor實現函式的呼叫(executor)

實現呼叫了reject()resolve無效呼叫 ---記錄promise的狀態

const peomise_status_pending='pending'  預設狀態

const peomise_status_fulfilled='fulfilled'

const peomise_status_rejected='rejected'

if判斷是某狀態就執行某**

考慮傳遞引數 儲存引數預設undefined

2:then方法

在構造的類裡面寫乙個then函式

執行then傳入進來的**函式

巧妙運用定時器來調整**執行順序----->queuemicrotask(規範)

1 const peomise_status_pending = 'pending'

2 const peomise_status_fulfilled = 'fulfilled'

3 const peomise_status_rejected = 'rejected'

4class tyypromise )16}

171819}

20 const reject = (reason) =>)28}

29}3031

executor(resolve, reject)32}

33then(onfulfilled, onrejected) 38}

39 const promise = new tyypromise((resolve, reject) =>)

45 promise.then(res =>, err =>)

這樣就能簡單的實現promise的基本功能

但是有待完善 比如 多次呼叫then都會執行,鏈式呼叫等等

手寫實現Promise的全部功能

發現的問題 在此過程中,發現 自己對 函式中的this指向,和詞法環境 的一些細節沒有掌握好,實現過程很痛苦!解決 應該惡補 下面上 1 function promise executor 16 17 18 1920 function reject data 31 32 3334 35 execut...

程式設計結構 Promise和Future

非阻塞模型中promise,future 和 callback一些比較常用的模型 future表示乙個可能還沒有實際完成的非同步任務結果 實際在程式設計中,應用future資料結構的時候,你得到並不是乙個真實結果 而是乙個futuredata 真實的結果可能還沒有處理完成。當然你可以針對這個結果新增...

動手寫乙個簡單的promise

promise 是非同步程式設計的一種解決方案,比傳統的解決方案 函式和事件 更合理和更強大。它由社群最早提出和實現,es6 將其寫進了語言標準,統一了用法,原生提供了promise物件。所謂promise,簡單說就是乙個容器,裡面儲存著某個未來才會結束的事件 通常是乙個非同步操作 的結果。從語法上...