nodejs.cn-Node.js-入門教程:Node.js 事件模組
阿新 • • 發佈:2020-08-19
ylbtech-nodejs.cn-Node.js-入門教程:Node.js 事件模組 |
1.返回頂部 |
Node.js 事件模組
目錄
emitter.addListener()
emitter.emit()
emitter.eventNames()
emitter.getMaxListeners()
emitter.listenerCount()
emitter.listeners()
emitter.off()
emitter.on()
emitter.once()
emitter.prependListener()
emitter.prependOnceListener()
emitter.removeAllListeners()
emitter.removeListener()
emitter.setMaxListeners()
events
模組為提供了 EventEmitter 類,這是在 Node.js 中處理事件的關鍵。
const EventEmitter = require('events')
const door = new EventEmitter()
事件監聽器返回及使用以下事件:
- 當監聽器被新增時返回
newListener
。 - 當監聽器被移除時返回
removeListener
。
以下是最常用的方法的詳細說明:
emitter.addListener()
emitter.on()
的別名。
emitter.emit()
觸發事件。 按照事件被註冊的順序同步地呼叫每個事件監聽器。
door.emit("slam") // 觸發 "slam" 事件。
emitter.eventNames()
返回字串(表示在當前EventEmitter
物件上註冊的事件)陣列:
door.eventNames()
emitter.getMaxListeners()
獲取可以新增到EventEmitter
物件的監聽器的最大數量(預設為 10,但可以使用setMaxListeners()
進行增加或減少)。
door.getMaxListeners()
emitter.listenerCount()
獲取作為引數傳入的事件監聽器的計數:
door.listenerCount('open')
emitter.listeners()
獲取作為引數傳入的事件監聽器的陣列:
door.listeners('open')
emitter.off()
emitter.removeListener()
的別名,新增於 Node.js 10。
emitter.on()
添加當事件被觸發時呼叫的回撥函式。
用法:
door.on('open', () => {
console.log('開啟')
})
emitter.once()
添加當事件在註冊之後首次被觸發時呼叫的回撥函式。 該回調只會被呼叫一次,不會再被呼叫。
const EventEmitter = require('events')
const ee = new EventEmitter()
ee.once('my-event', () => {
//只調用一次回撥函式。
})
emitter.prependListener()
當使用on
或addListener
新增監聽器時,監聽器會被新增到監聽器佇列中的最後一個,並且最後一個被呼叫。 使用prependListener
則可以在其他監聽器之前新增並呼叫。
emitter.prependOnceListener()
當使用once
新增監聽器時,監聽器會被新增到監聽器佇列中的最後一個,並且最後一個被呼叫。 使用prependOnceListener
則可以在其他監聽器之前新增並呼叫。
emitter.removeAllListeners()
移除EventEmitter
物件的所有監聽特定事件的監聽器:
door.removeAllListeners('open')
emitter.removeListener()
移除特定的監聽器。 可以通過將回調函式儲存到變數中(當新增時),以便以後可以引用它:
const doSomething = () => {}
door.on('open', doSomething)
door.removeListener('open', doSomething)
emitter.setMaxListeners()
設定可以新增到EventEmitter
物件的監聽器的最大數量(預設為 10,但可以增加或減少)。
door.setMaxListeners(50)
2、
2.返回頂部 |
3.返回頂部 |
4.返回頂部 |
5.返回頂部 |
6.返回頂部 |
作者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 |