2013-11-21 24 views
1

如何將id變量傳遞給api resquests回調函數,因爲該函數只有三個固定參數?javascript(node.js)|在回調函數的範圍內使用外部參數

我的意思是我不能做到這一點:

var id = 6; 
    request(url, function(err, resp, body, id) { 
//using here the returned body and the id too.. 
} 

,它不會讓我補充另一種說法,導致真正的功能是

request(url, function(err, resp, body){}

問候,

+0

可以更好地解釋你的問題? –

+2

您不必傳遞它,它在更高的範圍內定義,並且自動可用。 – adeneo

回答

4

從請求模塊調用回調,您可以像在回調中一樣使用變量id,因爲它在其外部sco中定義PE,但是當你做function(err, resp, body, id)時,它會在匿名回調的範圍內創建一個新變量id,並且外部範圍的ID將不可訪問。

var id = 6; 
request(url, function(err, resp, body) { 
    //you can access id here as is. 
} 

或者,如果你真的想通過它,你可以做(​​這是沒有用的,雖然):

var id = 6; 
request(url, (function(id, err, resp, body) { 
    //you can access id here as is. 
}).bind(this, id); 
+0

第一個示例是封閉示例(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures)。這是JS的標準做法。然而,要注意的一件事是,如果在執行回調函數之前'id'發生變化,那麼'id'包含新值而不是原始值。 –

+0

我也發佈了一個類似的答案:http://stackoverflow.com/a/28120741/1695680我覺得我的例子可能會更明顯地理解。 – ThorSummoner