了解Node.js 中的非同步和同步程式設計
在瀏覽NodeBeginner 網站時,您偶然發現了兩個執行資料庫查詢的不同程式碼片段。雖然目標很明確,但同步和非同步程式設計之間的差異仍然難以捉摸。
同步程式設計:
在第一個程式碼片段:
var result = database.query("SELECT * FROM hugetable"); console.log("Hello World");
此程式碼同步運作。程式在第一行暫停,等待查詢完成。因此,列印「Hello World」的下一行只能在查詢完成後執行。
非同步程式設計:
相反,第二個程式碼片段:
database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");
採用非同步程式設計。在這裡,「Hello World」訊息立即列印,而查詢執行同時運行。回調函數在完成後接收查詢的結果。
主要差異:
關鍵差異在於同步程式碼的阻塞行為。同步程式設計會暫停其他程式碼執行,直到處理查詢,而非同步程式設計則允許在等待查詢結果時並發執行其他任務。
執行流程:
執行首先,同步程式碼片段將導致:
Query finished Next line
另一方面,非同步程式碼片段將輸出:
Next line Query finished
說明非同步程式設計的非阻塞性質。
Node.js 中事件驅動的非同步性:
儘管作為單線程,Node.js 由於其事件驅動架構而支援非同步操作。檔案系統操作等任務在單獨的進程中處理。主 Node 執行緒接收有關這些操作的通知,使其能夠做出適當的回應,而不會阻塞其他任務的執行。
以上是Node.js 中的同步與非同步:資料庫查詢有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!