在此篇部落格中,我們的需求如下:
有乙個訊息排程器去操作傳送來訊息
但處理訊息花費的事件是不確定的,有多有少
訊息是不斷傳送過來的
這個時候就會出現一種情況:前一條訊息還未執行結束,後一條訊息就被傳送過來了
如果這個時候要求後一條訊息必須在前一條執行完才開始執行,該如何實現?
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環境下利用函式和原型...