我正在使用Node.js流,并在几个地方结束这样的事情:
var myVariable = 'XXX';
...
.on('end', function() {
// do something with myVariable
});
函数的行为是相同的,但取决于变量,所以我想重构它:
var myVariable = 'XXX';
...
.on('end', myFunction);
function myFunction(param){
// do something with param
}
如何在通话myVariable
中传递.on('end', myFunction);
的值?
答案 0 :(得分:1)
您将创建一个返回自定义函数的工厂以用作回调。
function myFactory(param) {
return function(e) {
console.log( 'param value:', param );
// do something
}
}
您可以这样使用它:
.on('end', myFactory(1));
.on('end', myFactory(2));
如果"结束"事件将一些参数传递给回调而不是事件对象或者除了事件对象之外,将它们添加到返回的函数的参数列表(return function(e, foo, bar) { ...
)
答案 1 :(得分:1)
你的回调函数应该这样定义:
function myCallback(myParam) {
// do some stuff
return myReturn;
}
当你声明你的监听器时,“on”方法应该采用事件的名称和方法回调的引用:
.on('eventName', myCallback);
当你发出事件时,你可以在那里传递参数:
emit('eventName', myParam);
然后在你的回调中,你可以检索参数