2015-07-10 37 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

相關問題