是否可以在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”,但没有看到针对“数据”的回调。
答案 0 :(得分:1)
问题是在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)
});