2015-07-10 87 views
0

我与Node.js的流工作,并在几个地方像这样结束:的Node.js - 使用Javascript - 如何将变量传递给回调函数

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

如果你平时得到'param'? – Cerbrus

+0

目前尚不清楚你实际需要什么。除了'end'事件给出的值之外,你是否想将变量作为参数传递给函数? – thefourtheye

+0

我刚刚更新了问题 – codependent

回答

1

您将使一个工厂返回用作回调的自定义函数。如果“结束”事件传递一些参数或者除了事件对象以外的回调

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

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

,将它们添加到返回的函数的参数:

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

你会使用这样的列表(return function(e, foo, bar) { ...

+0

我正在考虑回答这样的问题。 +1 – Cerbrus

+0

谢谢Juhana,我应该已经想通了自己! – codependent

+0

@Juhana如果'factory'将函数分开,在输入处将接受参数和对回调函数的引用,这可能会更好吗? –

1

回调函数应定义像这样:

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

当你宣布你的听众,“开”的方法,应以事件的名称,和你的方法回调的参考:

.on('eventName', myCallback); 

,当你发出的情况下,存在这样的情况,你通过PARAMS :

emit('eventName', myParam); 

然后在回调中,可以检索PARAMS

相关问题