• Node.js Video Tutorials

NodeJS - emitter.emit() 方法


emitter.emit() 方法会同步调用注册到名为 eventName 的事件的所有监听器,并按注册顺序依次调用,同时将参数传递给每个监听器函数。

此方法属于 Eventemitter 类,它是 node:events 模块的内置类。

语法

以下是 NodeJs emitter.emit() 方法的语法:

emitter.emit(eventName[, …args])

参数

此方法接受以下两个参数:

  • eventName:这是方法的第一个参数,它保存事件的名称。它可以是字符串或符号。
  • args:(可选) 此参数保存一组可以传递给监听器函数的参数。

返回值

(布尔值) 如果事件有监听器,则此方法返回 true;如果事件没有监听器,则返回 false。

示例 1

以下是 NodeJs emitter.emit() 方法的基本示例。

在这里,我们将 args 传递给了 myEmitter.emit() 方法。args 将传递给监听器函数,然后打印完整的消息。

const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();

function f1(arg1, arg2){
  console.log(`${arg1} to ${arg2}`);
}

myEmitter.on('myEvent', f1);

myEmitter.emit("myEvent", 'Welcome', 'Tutorialspoint', 'Bye');

输出

以上程序产生以下输出:

Welcome to Tutorialspoint

示例 2

首先,我们创建了一个包含消息的函数 func1。然后,我们调用了 emitter.addListener() 方法,将 eventName 作为第一个参数传递,并将 (func1) 传递给方法的 listener 参数,通过调用 myEmitter.emit() 方法并传入 eventName。由于我们在这里没有传递任何 args。由于 eventName 有一个监听器,因此 myEmitter.emit() 方法将返回监听器函数。

const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();

function f1() {
  console.log("Heya!, i'm function1");
}

myEmitter.addListener("myEvent", f1)

myEmitter.emit("myEvent"); 

输出

以上程序产生以下输出:

Heya!, i'm function1

示例 3

在这个程序中,我们使用了扩展运算符 (…) 来提取我们传递的每个 args。因此,所有 args 都将被提取并传递给监听器函数。

const EventEmitter = require('node:events');
const myEmitter = new EventEmitter();

function f1(...args){
  const teams = args.join(', ');
  console.log(`Some International cricket teams are ${teams}.`);
}

myEmitter.on('myEvent', f1);

myEmitter.emit("myEvent", 'India', 'Pakistan', 'Australia', 'England');

输出

以上程序产生以下输出:

Some International cricket teams are India, Pakistan, Australia, England.
nodejs_events.htm
广告

© . All rights reserved.