如何實現一個 LazyMan?

Natumsol發表於2016-12-24

3月份找實習的時候,微信面試官給了我一套筆試題,今天整理時無意中翻了出來,其中有一道題特別有意思:

實現一個LazyMan,可以按照以下方式呼叫:
LazyMan(“Hank”)輸出:
Hi! This is Hank!

LazyMan(“Hank”).sleep(10).eat(“dinner”)輸出
Hi! This is Hank!
//等待10秒..
Wake up after 10
Eat dinner~

LazyMan(“Hank”).eat(“dinner”).eat(“supper”)輸出
Hi This is Hank!
Eat dinner~
Eat supper~

LazyMan(“Hank”).sleepFirst(5).eat(“supper”)輸出
//等待5秒
Wake up after 5
Hi This is Hank!
Eat supper

以此類推。

這是典型的JavaScript流程控制,問題的關鍵是如何實現任務的順序執行。在Express有一個類似的東西叫中介軟體,這個中介軟體和我們這裡的吃飯、睡覺等任務很類似,每一個中介軟體執行完成後會呼叫next()函式,這個函式用來呼叫下一個中介軟體。

對於這個問題,我們也可以利用相似的思路來解決,首先建立一個任務佇列,然後利用next()函式來控制任務的順序執行:

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

如何實現一個 LazyMan? 如何實現一個 LazyMan?

相關文章