nodejs 基础模块 events

events 文档

events

绑定事件用 on,触发事件用 emit

nodejs 基础模块 events_第1张图片
image

例子

nodejs 基础模块 events_第2张图片
image
const EventEmitter = require('events');

class CustomEvent extends EventEmitter {}

const ce = new CustomEvent();

ce.on('test', () => {
  console.log('this is a test!');
});

setInterval(() => {
  ce.emit('test');
}, 500);
nodejs 基础模块 events_第3张图片
image

传入参数,

定义报出错误的例子

nodejs 基础模块 events_第4张图片
image
const EventEmitter = require('events');

class CustomEvent extends EventEmitter {
}

const ce = new CustomEvent();

ce.on('test', () => {
  console.log('this is a test!');
});

ce.emit('test');

ce.on('error', err => {
  console.log(err);
});

ce.emit('error', new Error('boom!'));
nodejs 基础模块 events_第5张图片
image

传多个参数

nodejs 基础模块 events_第6张图片
image

只触发一次

once 只触发一次

nodejs 基础模块 events_第7张图片
image
const EventEmitter = require('events');

class CustomEvent extends EventEmitter {
}

const ce = new CustomEvent();

ce.once('once', () => {
  console.log('This is test once');
});

setInterval(() => {
  ce.emit('once');
}, 500);
nodejs 基础模块 events_第8张图片
image

移除事件

removeListener 移除事件

nodejs 基础模块 events_第9张图片
image
const EventEmitter = require('events');

class CustomEvent extends EventEmitter {
}

const ce = new CustomEvent();

ce.on('test', fn1);
ce.on('test', fn2);

function fn1() {
  console.log('fn1');
}

function fn2() {
  console.log('fn2');
}

setInterval(() => {
  ce.emit('test');
}, 500);

setTimeout(() => {
  ce.removeListener('test', fn1);
  ce.removeListener('test', fn2);
}, 1500);
nodejs 基础模块 events_第10张图片
image

你可能感兴趣的:(nodejs 基础模块 events)