無涯教程: Node.js - 事件傳送
Node中的許多物件都會發出事件,例如net.Server每次對等點連線到它時都會發出一個事件,而fs.readStream在檔案開啟時會發出一個事件。發出事件的所有物件都是events.EventEmitter的例項。
EventEmitter類
如上一節所述,EventEmitter類位於事件模組中。可透過以下程式碼訪問-
//Import events module var events=require('events'); //Create an eventEmitter object var eventEmitter=new events.EventEmitter();
當EventEmitter遇到任何錯誤時,它將發出"error"事件,新增新的偵聽器時,將觸發" newListener"事件,而當刪除偵聽器時,將觸發" removeListener"事件
EventEmitter提供了多個屬性,如 on 和 emit ,on 屬性用於將函式與事件繫結,而 emit 用於觸發事件。
EventEmitter方法
Sr.No. | Method & 描述 |
---|---|
1 |
addListener(event,listener) 在偵聽器陣列的末尾為指定事件新增一個偵聽器。 |
2 |
on(event,listener) 在偵聽器陣列的末尾為指定事件新增一個偵聽器。 |
3 |
once(event,listener) 向事件新增一次偵聽器,僅在下次觸發事件時才呼叫此偵聽器,然後將其刪除。 |
4 |
removeListener(event,listener) 從偵聽器陣列中刪除指定事件的偵聽器。 |
5 |
removeAllListeners([event]) 刪除所有偵聽器,或指定事件的偵聽器。 |
6 |
setMaxListeners(n) 預設情況下,如果為特定事件新增了10個以上的偵聽器,則EventEmitters將列印警告。設定為零表示無限。 |
7 |
listeners(event) 返回指定事件的偵聽器陣列。 |
8 |
emit(event,[arg1],[arg2],[...]) 使用提供的引數按順序執行每個偵聽器,如果事件具有偵聽器,則返回true,否則返回false。 |
Class 方法
Sr.No. | Method & 描述 |
---|---|
1 |
listenerCount( emitter,event) 返回給定事件的偵聽器數。 |
Events 事件
Sr.No. | 大事記 & 描述 |
---|---|
1 |
newListener
每當新增偵聽器時都會發出此事件,觸發此事件後,可能尚未將偵聽器新增到該事件的偵聽器陣列中。 |
2 |
removeListener
每當有人刪除偵聽器時,都會發出此事件,觸發此事件後,可能尚未從該事件的偵聽器陣列中刪除該偵聽器。 |
示例程式碼
使用以下Node.js程式碼建立一個名為main.js的js檔案-
var events=require('events'); var eventEmitter=new events.EventEmitter(); //listener #1 var listner1=function listner1() { console.log('listner1 executed.'); } //listener #2 var listner2=function listner2() { console.log('listner2 executed.'); } //Bind the connection event with the listner1 function eventEmitter.addListener('connection', listner1); //Bind the connection event with the listner2 function eventEmitter.on('connection', listner2); var eventListeners=require('events').EventEmitter.listenerCount (eventEmitter,'connection'); console.log(eventListeners + " Listner(s) listening to connection event"); //Fire the connection event eventEmitter.emit('connection'); //Remove the binding of listner1 function eventEmitter.removeListener('connection', listner1); console.log("Listner1 will not listen now."); //Fire the connection event eventEmitter.emit('connection'); eventListeners=require('events').EventEmitter.listenerCount(eventEmitter,'connection'); console.log(eventListeners + " Listner(s) listening to connection event"); console.log("Program Ended.");
現在執行main.js以檢視輸出-
$node main.js
驗證輸出。
2 Listner(s) listening to connection event listner1 executed. listner2 executed. Listner1 will not listen now. listner2 executed. 1 Listner(s) listening to connection event Program Ended.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2807037/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 無涯教程:Node.js - OSNode.js
- 無涯教程: Node.js - Web模組Node.jsWeb
- 無涯教程:Docker - Java安裝DockerJava
- 無涯教程:Docker - Python安裝DockerPython
- 無涯教程: Laravel 8 - 模型觀察者Laravel模型
- 無涯教程: Nginx - 指令與上下文Nginx
- 無涯教程: Laravel 8 - 自定義函式介紹Laravel函式
- [譯] 由 Node.js 傳送 Web 推送通知Node.jsWeb
- Xamarin Essentials教程傳送郵件EmailAI
- 專訪CSS魔法:學海無涯,而吾生有涯(圖靈訪談)CSS圖靈
- Elasticsearch使用syslog傳送Watcher告警事件Elasticsearch事件
- 伺服器傳送事件(SSE) vs. WebSockets伺服器事件Web
- 小米4無法傳送簡訊怎麼辦 小米4無法傳送簡訊解決方法
- WebSockets與伺服器傳送事件SSE比較Web伺服器事件
- 教程-Python例項-傳送郵件功能Python
- HTML5伺服器傳送事件(server-sentevent)HTML伺服器事件Server
- win10使用自帶郵箱傳送郵件時直接進傳送箱裡無法完成傳送怎麼解決Win10
- node.js爬取資料並定時傳送HTML郵件Node.jsHTML
- IM 聊天教程:傳送圖片 / 影片 / 語音 / 表情
- GitHub Actions 教程:定時傳送天氣郵件Github
- Laravel 郵件無法傳送原因的查詢Laravel
- 傳送陣
- 在Thymeleaf和HTMX中使用伺服器傳送的事件 - Wim伺服器事件
- IM 聊天教程:傳送圖片 / 視訊 / 語音 / 表情
- Node.js 教程第九篇——Express 檔案上傳Node.jsExpress
- 如何在Node.js的httpServer中接收前端傳送的arraybuffer資料Node.jsHTTPServer前端
- 知無涯,行者之路莫言終(我的程式設計之路)程式設計
- 什麼是WebSockets、伺服器傳送事件、長輪詢、WebRTC、WebTransport?Web伺服器事件
- 郵件傳送
- ReactPortals傳送門React
- 傳送郵件
- 收到263定時傳送郵件的傳送提醒
- C#原生郵件傳送+傳送日誌記錄C#
- connection事件當有資料傳送過來時會被觸發事件
- 軟體測試學習教程——Python SMTP傳送郵件Python
- uwsgi多程式配合kafka-python訊息無法傳送KafkaPython
- (完美解決)chatGPT登陸正常卻無法傳送訊息ChatGPT
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI