Node.js 中的事件驅動函數執行:等待回調
在事件驅動程式設計的上下文中,通常需要執行依賴於非同步任務完成的例程。在 Node.js 中,經常使用回呼來處理此類任務。然而,在某些情況下,需要“暫停”函數直到呼叫回調。
考慮一個簡化的函數:
function(query) { myApi.exec('SomeCommand', function(response) { return response; }); }
此函數旨在傳回來自myApi.exec() 呼叫。但是,該實作無法按預期工作,因為 Node.js 在執行回呼之前立即返回。
解決此問題的天真嘗試可能涉及使用while 循環:
function(query) { var r; myApi.exec('SomeCommand', function(response) { r = response; }); while (!r) {} return r; }
這種方法是無效的,因為它引入了程式碼阻塞並阻礙了Node.js 的事件驅動性質。
Node.js 之道:擁抱回調
The這種情況下的最佳解決方案是利用回調模式並避免阻塞執行。您的函數不應等待返回值,而應接受操作完成時將調用的回調參數:
function(query, callback) { myApi.exec('SomeCommand', function(response) { // Do additional processing if necessary... callback(response); }); }
此方法允許您執行非同步任務而無需等待其完成。呼叫者不應期望傳統意義上的「返回」值,而應指定一個例程來處理結果資料:
myFunction(query, function(returnValue) { // Use the return value here. });
透過遵循此模式,您的程式碼將保持非阻塞和事件驅動,確保Node.js 中的高效率執行。
以上是如何在事件驅動程式設計中暫停 Node.js 回呼函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!