node.js - 是否可以在 NodeJS 中的 'newListener' 事件的事件监听器回调中发出事件?

标签 node.js

是否可以在 NodeJS 中的“newListener”事件的事件监听器回调中发出事件?

例如

var EventEmitter = require('events');
var eventEmitter = new EventEmitter.EventEmitter();

eventEmitter.on('newListener', function(test) {
  eventEmitter.emit('data', 'testing');
  console.log('newListener');
});

eventEmitter.on('data', function(test){
  console.log(test)
});

我确实看到了日志条目“newListener”,但没有看到调用“data”的回调。

最佳答案

问题是在 newListener 内部,新的监听器尚未激活。使用process.nextTick() :

const EventEmitter = require('events');
var eventEmitter = new EventEmitter.EventEmitter();

eventEmitter.on('newListener', function(event) {
    if (event === 'data') {
        process.nextTick(() => {
            eventEmitter.emit('data', 'testing');
        });
    }
    console.log('newListener', event);
});

eventEmitter.on('data', function(test) {
    console.log('data', test)
});

关于node.js - 是否可以在 NodeJS 中的 'newListener' 事件的事件监听器回调中发出事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52811205/

相关文章:

javascript - 如何使用正则表达式查找文件中的所有 Handlebars 部分

node.js - 在哪里可以找到包含 revokeRefreshTokens 方法的 firebase-admin 包?

node.js - 如何将Twitter的个人资料图片变大(NodeJs、Ejs和passport)

node.js + socket.IO - 套接字没有重新连接?

javascript - socket.io 分配自定义 socket.id

javascript - 客户端无法保存jpeg图片

javascript - Express - socket.io - session 。将用户 ID 称为套接字 ID

node.js - 是否可以跳过 v8 GC 收集的对象?

php-node Node Express 找不到模块

node.js - NodeJS : using chrome-remote-interface instead puppeteer