如何使用一个函数来设置一个监听器回调

NodeJS - How can I use a function to set a listeners callback?

本文关键字:一个 监听器 回调 设置 函数 何使用      更新时间:2023-09-26
var events = require('events');
var requests = new events.EventEmitter();
function setListenerCallback(callback) {
    requests.on('randomEvent', callback(message));
}
setListenerCallback(function (e) {
    console.log(e);
});
Result: callback is undefined.

正如您所看到的,我正试图从函数参数设置侦听器回调函数。结果是函数类型为'undefined',因此在侦听器作用域之外。

那么我如何使用一个函数来设置一个监听器回调呢?
如何从侦听器访问父函数作用域?

代码中有一个bug:

旧代码:

var events = require('events');
var requests = new events.EventEmitter();
function setListenerCallback(callback) {
    requests.on('randomEvent', callback(message));
}
setListenerCallback(function (e) {
    console.log(e);
});  

新代码:

var events = require('events');
var requests = new events.EventEmitter();
function setListenerCallback(callback) {
    requests.on('randomEvent', callback);
}
setListenerCallback(function (e) {
    console.log(e);
});  

现在当事件被触发时,回调被调用。