JS 來實現乙個 Promise

2022-01-19 00:37:23 字數 856 閱讀 8556

promise 原始碼:

// this promise code refered to this blog

// var promise = function (fn)

}function trytojson(obj) catch (e)

return value

}function resolve(newvalue)

} else

}}, 0);

}function reject(newvalue) 裡更改state狀態為fulfilled並且執行donelisti;

.catch((err) => );

等待完善。

promise 中的執行函式是同步進行的,但是裡面存在著非同步操作,在非同步操作結束後會呼叫 resolve 方法,或者中途遇到錯誤呼叫 reject 方法,這兩者都是作為微任務進入到 eventloop 中。但是你有沒有想過,promise 為什麼要引入微任務的方式來進行**操作?

若 promise **放在進行巨集任務佇列的隊尾,若佇列非常長,那麼**遲遲得不到執行,造成的效果就是應用卡頓。所以就引入了微任務。

手寫乙個Promise

js物件導向 在js中一切皆物件,但js並不是一種真正的物件導向 oop 的語言,因為它缺少類 class 的概念。雖然es6引入了class和extends,使我們能夠輕易地實現類和繼承。但js並不存在真實的類,js的類是通過函式以及原型鏈機制模擬的,本小節的就來 如何在es5環境下利用函式和原型...

手寫乙個promise

promise a 規範 注 以下 沒有通過promises aplus tests的全部測試,但基本功能還是全的 測試結果 864 passing,8 failing 另外可以參考這個指南中的 promise實現 promise resolve 100 規範 class mypromise con...

用 Promise 實現乙個訊息佇列

在此篇部落格中,我們的需求如下 有乙個訊息排程器去操作傳送來訊息 但處理訊息花費的事件是不確定的,有多有少 訊息是不斷傳送過來的 這個時候就會出現一種情況 前一條訊息還未執行結束,後一條訊息就被傳送過來了 如果這個時候要求後一條訊息必須在前一條執行完才開始執行,該如何實現?sync function...