用 Promise 實現乙個訊息佇列

2021-09-30 17:09:36 字數 937 閱讀 9806

在此篇部落格中,我們的需求如下:

有乙個訊息排程器去操作傳送來訊息

但處理訊息花費的事件是不確定的,有多有少

訊息是不斷傳送過來的

這個時候就會出現一種情況:前一條訊息還未執行結束,後一條訊息就被傳送過來了

如果這個時候要求後一條訊息必須在前一條執行完才開始執行,該如何實現?

sync function

wait

(timeout)

;let timer;

defer.promise =

newpromise

((resolve, reject)

=>

; defer.

reject

=(result)

=>;}

);timer =

settimeout

(defer.resolve, timeout)

;return defer.promise;

}

上面的函式主要作用是用來模擬訊息處理的時間。

async

function

messageprint

(message)

async

function

messageschedule

(message)

async

function

main()

main()

;

ps: 如果沒有要求後一條訊息必須在前一條執行完才開始執行,則main**如下

function

main()

以上即完成了這個功能。

JS 來實現乙個 Promise

promise 原始碼 this promise code refered to this blog var promise function fn function trytojson obj catch e return value function resolve newvalue else ...

用es6實現乙個簡單的promise

promise是乙個面試經常會問的問題,在這裡我們可以通過es6的語法實現乙個簡單的promise,面試能寫出來基本就沒問題了 const pending pending const resolved resolved const rejected rejected class mypromise ...

手寫乙個Promise

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