回覆列表
  • 1 # Tiekt鐵鐵

    Node JS是單執行緒應用程式,但它透過事件和回撥概念,支援併發。 由於Node JS每一個API是非同步的,作為一個單獨的執行緒,它使用非同步函式呼叫,以保持併發性。Node JS使用觀察者模式。Node執行緒保持一個事件迴圈,每當任何任務得到完成,它觸發這標誌著該事件偵聽器函式執行相應的事件。事件驅動程式設計Node.js大量使用事件,這也是為何Node.js是相當快相對於其他類似的技術。當Node啟動其伺服器,它可以簡單地啟動它的變數,宣告的函式,然後簡單地等待發生的事件。在事件驅動的應用中,通常主迴圈監聽事件,然後觸發回撥函式時被檢測到這些事件之一。儘管事件似乎類似於回撥。不同之處在於如下事實,當非同步函式返回其結果的回撥函式被呼叫的地方作為對觀察者模式的事件處理。 監聽事件的功能作為觀察員。每當一個事件被觸發,它的監聽函式就開始執行。Node.js具有多個內建透過事件模組和用於將事件繫結和事件偵聽,如下EventEmitter類可用事件:// Import events modulevar events = require("events");// Create an eventEmitter objectvar eventEmitter = new events.EventEmitter();以下為事件處理程式繫結使用事件的語法:// Bind event and even handler as followseventEmitter.on("eventName", eventHandler);我們可以透過程式設計觸發一個事件,如下所示:// Fire an event eventEmitter.emit("eventName");例子建立一個名為具有以下程式碼main.js一個js檔案:// Import events modulevar events = require("events");// Create an eventEmitter objectvar eventEmitter = new events.EventEmitter();// Create an event handler as followsvar connectHandler = function connected() { console.log("connection succesful."); // Fire the data_received event eventEmitter.emit("data_received");}// Bind the connection event with the handlereventEmitter.on("connection", connectHandler); // Bind the data_received event with the anonymous functioneventEmitter.on("data_received", function(){ console.log("data received succesfully.");});// Fire the connection event eventEmitter.emit("connection");console.log("Program Ended.");現在讓我們試著執行上面的程式作為檢查的輸出:$ mnode main.js這將產生以下結果:connection succesful.data received succesfully.Program Ended.

  • 中秋節和大豐收的關聯?
  • 要過年了,買什麼車好呢?