Node.js 在單執行緒事件驅動架構上運行,這表示它可以同時處理許多操作,而不會阻塞主執行緒。這對於創建可擴展的應用程式至關重要,其中 I/O 操作(讀取檔案、查詢資料庫等)等任務需要非同步發生,以避免阻塞其他程式碼的執行。
同步程式碼一次執行一個步驟,這意味著每個步驟必須完成才能進入下一個步驟。如果操作緩慢(例如讀取大檔案或查詢資料庫),這可能會阻塞主執行緒。
範例(同步程式碼):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
另一方面,非同步程式碼不會阻塞主執行緒。程式不會等待操作完成,而是繼續執行並在準備就緒時處理非同步操作的結果。
範例(非同步程式碼):
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
非同步/等待
async/await 在 ES2017 (Node.js 7.6+) 中引入,是建構在 Promise 之上的語法糖。它允許以類似同步的方式編寫非同步程式碼,使其更具可讀性且更易於維護。
範例(非同步/等待):
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
選擇非同步與同步程式碼取決於您的用例。對於 I/O 密集型操作,始終偏好非同步模式,以保持主執行緒非阻塞和應用程式回應。
感謝您的閱讀,祝您編碼愉快! ?
以上是Node.js 中的非同步模式 - Node.js 教學 - 第 6 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!