在请求回调中添加额外的args。

时间:2014-07-05 16:49:54

标签: javascript node.js callback

请求函数(来自此library)。具有以下定义:

request(url, callback)

回调参数有3个参数:

  • 适用时的错误(通常来自http.ClientRequest对象)
  • http.IncomingMessage对象
  • 第三个是响应主体(如果提供了json选项,则为String或Buffer或JSON对象)

所以我有一个叫做句柄响应的函数,如下所示:

function handleRespone(error,incomingmessage,responsebody)

我这样称呼它:

  request(url, handleRespone)

我想在handleResponse中添加一个额外的参数,但我不确定它是如何工作的。我尝试添加它request(url, handleRespone(extra))但是当我在handleRespone函数中执行console.log(extra)时它没有值。我该如何解决?

2 个答案:

答案 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