我有一個關於Node中的異步方法API的問題。NodeJS在繼續之前檢查函數完成
所以,我有一個功能,我們稱之爲longSetup(callback)
。
顧名思義,longSetup(callback)
需要很長時間才能完成。但是,這種設置可以與其他事情並行完成。所以,當longSetup()
正在發生時,我可以設置其他的東西。
所以一旦longSetup()
完成,該類已準備好執行另一個功能,如serveData()
。
現在,我不知道什麼時候會調用serveData()
。 serveData()
基於用戶I/O,可在longSetup()
完成之前調用,或可在longSetup()
完成之後調用。另外,我從不直接調用serveData()
。
這是真的,我需要longSetup()
之前serveData()
可以成功執行完成,但我想利用這一事實,即longSetup()
可以異步完成,因此我不想執行的同步版本longSetup()
;我寧願在那段時間內完成其他設置。
由於serveData()
可以隨時調用,我想檢查longSetup()
是否在調用serveData()
時完成。如果完成,請繼續serveData()
。如果不是,則等待longSetup()
完成,然後繼續執行。由於longSetup()
僅被調用一次,所以在大多數情況下我不會等待。另外,如果用戶I/O需要時間,則longSetup()
將在第一次調用serveData()
時完成。
我已經通過了幾個關於等待函數返回執行另一個函數/在另一個函數之後執行另一個函數之前返回的問題和答案,我理解了Node的異步方式以及爲什麼要使用回調函數。然而,這是一個不同的用例,我想知道節點是否提供了一些等待另一個異步函數的方式。
謝謝大家!
呼叫serveData()從longSetup(的底部) – dandavis
切換的布爾時'longSetup'完成並與功能的其餘部分之前,前檢查它裏面'serveData'? – thgaskell
你看過承諾嗎? https://github.com/kriskowal/q似乎很受歡迎。 – Diver