请求函数(来自此library)。具有以下定义:
request(url, callback)
回调参数有3个参数:
所以我有一个叫做句柄响应的函数,如下所示:
function handleRespone(error,incomingmessage,responsebody)
我这样称呼它:
request(url, handleRespone)
我想在handleResponse中添加一个额外的参数,但我不确定它是如何工作的。我尝试添加它request(url, handleRespone(extra))
但是当我在handleRespone函数中执行console.log(extra)
时它没有值。我该如何解决?
答案 0 :(得分:1)
如果你只是在handleResponse
范围之外定义var,它将起作用
var extra = "panda";
function handleResponse(error, incomingmessage, responsebody) {
console.log(extra); // "panda"
}
request(url, handleResponse);
或者,您可以使用匿名函数包装器并将所需数量的args传递给handleResponse函数
request(url, function(err, incomingmessage, responsebody) {
handleResponse(err, incomingmessage, responsebody, extra, foo, bar);
});
否则,它有点hacky(因为它要求你在函数的开头添加"额外的"参数),但你可以使用Function.prototype.bind
function handleResponse(extra, error, incomingmessage, responsebody) {
console.log(extra); // "panda"
}
request(url, handleResponse.bind(null, "panda"));
答案 1 :(得分:0)
也许您可以尝试使用参数对象来捕获变量。
在您的情况下,请尝试
function handleRespone(error,incomingmessage,responsebody){
console.log(arguments[3]);
// your stuff ..
}
我希望它可以帮到你。 Some information on arguments