Nodejs學習筆記-01 events

weixin_33766168發表於2019-02-22

以下思維導圖是通過閱讀API文件以及原始碼總結的。

7836259-aa00974645a75039.png
node_events.png

簡單說明一下。

  • events 模組匯出了 EventEmitter 這個 class, 因此通過 require() 就能直接獲得。既可以直接 new EventEmitter() 獲得事件物件,也可以繼承 EventEmitter 自定義事件物件。
  • 事件物件有一個監聽器陣列,可以通過 listeners() 來獲得。
  • defaultMaxListeners 控制所有事件物件所能繫結的最大監聽器數量,因此最好不要直接修改該屬性,而應該通過 setMaxListeners() 來修改當前事件物件的最大監聽器數量。
  • 監聽器有一次性和非一次性的區別,一次性監聽器執行一次之後會自動解綁。
  • 繫結監聽器時會在監聽器陣列 push 一個監聽器,預設會在陣列末尾,可以通過 prependListener()prependOnceListener() 來使得新的監聽器放在監聽器陣列開頭,後者是一次性監聽器。
  • 通過 emit() 方法觸發事件。該方法第一個引數是事件名稱,後面的引數則是傳遞給監聽器的引數。
  • 當事件觸發時,監聽器陣列裡面的監聽器函式會同步依次執行。
  • 當事件物件中發生錯誤,則會觸發 error 事件。可以給 process 物件的 uncaughtException 事件繫結一個全域性監聽器。但是最好是給當前事件物件的 error 事件繫結錯誤處理監聽器。

相關文章