javascript - 向请求回调添加额外的参数。

标签 javascript node.js callback

请求函数(来自此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/

相关文章:

javascript - 使用 jQuery 查找选择选项乘以输入字段的总和

javascript - 使用 AngularJS 设置事件标签

javascript - 在 SailsJs 中同时开发 Rest API 和服务器端渲染

javascript - 如何使一个库(例如 Q)可供所有 Controller 使用?

mongodb - 渲染 Jade 文件时出错

JavaScript 异步回调和作用域

java - 将数据分块同步到服务器会导致 StackoverflowException

JavaScript 全局变量未更改

javascript - 使用 Node.js 和 Express 将 JSON 数据集显示为表格

java - 为什么回调方法需要返回一些东西?