请求函数(来自此library)。具有以下定义:
request(url, callback)
回调参数有 3 个参数:
- 适用时出现错误(通常来自 http.ClientRequest 对象)
- 一个 http.IncomingMessage 对象
- 第三个是响应正文(字符串或缓冲区,如果提供了 json 选项,则为 JSON 对象)
所以我有一个名为处理响应的函数,如下所示:
function handleRespone(error,incomingmessage,responsebody)
我这样调用它:
request(url, handleRespone)
我想向handleResponse 添加一个额外的参数,但我不确定它是如何工作的。我尝试添加它 request(url, handleRespone(extra))
但是当我做console.log(extra)
时在handleRespone函数中它没有值。我该如何解决?
最佳答案
如果您只是在 handleResponse
范围之外定义 var,它将起作用
var extra = "panda";
function handleResponse(error, incomingmessage, responsebody) {
console.log(extra); // "panda"
}
request(url, handleResponse);
或者,您可以使用匿名函数包装器并将任意数量的参数传递给您的handleResponse函数
request(url, function(err, incomingmessage, responsebody) {
handleResponse(err, incomingmessage, responsebody, extra, foo, bar);
});
否则,这有点麻烦(因为它要求您在函数的开头添加“额外”参数),但您可以使用Function.prototype.bind
function handleResponse(extra, error, incomingmessage, responsebody) {
console.log(extra); // "panda"
}
request(url, handleResponse.bind(null, "panda"));
关于javascript - 向请求回调添加额外的参数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588588/