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

Node.js - Javascript - How to pass variables to a callback function

我正在使用 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
}

如何在调用 .on('end', myFunction); 中传递 myVariable 的值?

您将创建一个 returns 自定义函数用作回调的工厂。

function myFactory(param) {
    return function(e) {
        console.log( 'param value:', param );
        // do something
    }
}

你会这样使用它:

.on('end', myFactory(1));

.on('end', myFactory(2));

如果 "end" 事件将一些参数传递给回调,而不是事件对象或除了事件对象之外,将它们添加到返回函数的参数列表中 (return function(e, foo, bar) { ...)

你的回调函数应该这样定义:

function myCallback(myParam) {
  // do some stuff
  return myReturn;
}

当你声明你的侦听器时,"on" 方法应该采用事件的名称,以及你的方法回调的引用:

.on('eventName', myCallback);

并且当您发出事件时,您可以在此处传递参数:

emit('eventName', myParam);

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