是否可以在 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/