【问题标题】:In Node JS how to pass a variable to http.request callback?在 Node JS 中如何将变量传递给 http.request 回调?
【发布时间】:2016-06-27 13:10:47
【问题描述】:

我调用了http.request().end(),我需要将一个变量传递给回调函数。

我该怎么做?

对于我的情况,用户访问服务器,服务器向我们的 API 发送 HTTP 请求,然后服务器需要用 HTTP 请求返回的信息响应该用户。如果不使用全局变量,我想不出办法做到这一点,这将是一个问题,因为如果 2 个人同时执行此操作,则两条消息都会发送给同一个用户

不确定它会有什么帮助,但这是我正在尝试做的事情..

callback = function(response){
    //...
    respondToUser(userId);
}

function doStuff(userId){
    http.request({host:'www.google.com'}, callback).end();
}

【问题讨论】:

  • “如果不使用全局变量,我想不出办法来做到这一点...” 不需要全局变量,只需您的 request 回调关闭。如果您出示您的代码,我们可以为您提供帮助。
  • 如果你不使用匿名函数作为回调,你应该能够轻松地传入你想要的。
  • 我添加了一个粗略的示例来说明我如何尝试使用它。也许我从根本上误解了一些东西,如果我是,我道歉,我是 node.js 的新手

标签: javascript node.js express httprequest


【解决方案1】:

它被称为“闭包”,您可以在其中将上下文与您正在编写的函数保持一致,就像这样

function doStuff(userId){
    var callback = function(response){
        //...
        respondToUser(userId);
    }

    http.request({host:'www.google.com'}, callback).end();
}

【讨论】:

  • 我考虑过这一点,但我有几个不同的函数需要执行这种行为,并且多次复制粘贴一百行解析代码可能不是一个很好的解决方案。如果这是唯一的解决方案,我想我可能会结合所有这些功能。
  • 您可能已经以一种可以使其在过程编程语言(如 Java 或 C++)中工作的方式组织您的代码——在 JavaScript 等函数式语言中构建代码的方式是完全不同的
  • 是的,你可能是对的。我将所有函数重写为一个更复杂的函数,其中包含回调,所以感谢您的回答
猜你喜欢
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2011-11-13
  • 2020-09-02
  • 2017-05-16
  • 2020-10-17
  • 1970-01-01
相关资源
最近更新 更多