Node.js - Javascript - 如何将变量传递给回调函数

时间:2015-07-10 12:27:00

标签: javascript node.js callback

我正在使用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);的值?

2 个答案:

答案 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);

然后在你的回调中,你可以检索参数