日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs中EventEmitter

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodejs中EventEmitter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在模塊events中,定義了一個EventEmitter類,可以使用var EventEmitter = require('events');訪問它。基本上所有發送事件的對象都是繼承自EventEmitter。有基本屬性和方法如下。

  • setMaxListeners(n)
    設置事件的最大監視者數量
  • getMaxListeners(n)
    獲取事件的最大監視者數量
  • on(event, listener)/addListener(event, listener)
    為事件增添一個監視者
  • once(event, listener)
    為事件增添一個一次監視者
  • removeListener(event, listener)
    為事件刪除一個監視者,注意listener指向同一個事件監聽函數。
  • removeAllListeners([event])
    如果無參數,移除所有事件的監視者。如果參數為event,移除該事件的監視者。
  • listenerCount(event)
    獲取特定事件的監視者數量。
  • listeners(event)
    獲取特定事件的監聽者列表。
  • _eventsCount
    事件的數量
var EventEmitter = require('events');var em = new EventEmitter(); em.setMaxListeners(2);var start = (data) => console.log(`data ${data} start`); var end = (data) => console.log(`data ${data} end`);em.on('data', start); em.on('data', end);em.once('close', () => console.log('close...'));console.log(`the max listeners value: ${em.getMaxListeners()}`); console.log(`the number of event: ${em._eventsCount}`); console.log(`the number of listeners the data event: ${em.listenerCount('data')}`); console.log(`the number of listeners the data close: ${em.listenerCount('close')}`);setInterval(() => {em.emit('data', 'eat');em.emit('data', 'play')em.emit('close'); }, 1000);setTimeout(() => {em.removeListener('data', start);em.removeListener('data', end); }, 3000);

寫一個繼承EventEmitter的對象。使用 util.inherits() 來完成對象的繼承。

var EventEmitter = require('events'); var util = require('util');function MyStream() {EventEmitter.call(this); }util.inherits(MyStream, EventEmitter);MyStream.prototype.write = function (data){this.emit('write', data); }var stream = new MyStream();stream.on('write', function(data) {console.log(data); });stream.write('hello, world');

再用ES6的class重寫一下繼承。

var EventEmitter = require('events');class MyStream extends EventEmitter {write(data) {this.emit('write', data);} }var stream = new MyStream(); stream.on('write', data => console.log(data)); stream.write('hello, world'); stream.write('hello, world'); stream.write('hello, world');

轉載于:https://www.cnblogs.com/xianwang/p/5034656.html

總結

以上是生活随笔為你收集整理的nodejs中EventEmitter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。