【问题标题】:How to pass variable to a nested callback function [duplicate]如何将变量传递给嵌套回调函数[重复]
【发布时间】:2014-08-30 10:16:47
【问题描述】:

我正在使用request npm 来获取 http 页面。我有类似的东西

function callbackFunction1() {
  var p = 'foo';

  request(url, callbackFunction2);
}

function callbackFunction2(err, response, body){

}

如何将变量p 作为callbackFunction2 的参数传递?

【问题讨论】:

  • 你可以把p变量放在第一个callbackFunction1外面,然后把它作为一个普通变量放在callbackFunction2里面。
  • 这将解决您的问题:stackoverflow.com/questions/13851088/…
  • 在这种情况下p 是什么?您是希望完全替换 body 参数还是希望将其作为额外参数传入?
  • 我希望传递一个额外的参数

标签: javascript node.js


【解决方案1】:

我认为您需要提供所有 3 个参数。

你可以像下面这样传递一个匿名函数作为第二个参数

request(url, function(err, response, body){
    callbackFunction2(err,response, body, p);
});

【讨论】:

  • 认为你还需要在匿名回调函数中将err和response作为参数
  • callbackFunction2的参数是三个,那么我应该传四个参数
  • @Mazzy 我有点困惑,为什么要传递 4 个参数,当函数只需要 3 个参数时,你将如何使用它?
  • 请求回调函数接受三个参数npmjs.org/package/request
  • @MatthiasPosch 是正确的,所有三个参数后跟第四个本地参数都需要传递给您的原始回调。 not 定义你的回调内联是没有意义的,除非它被request 的其他回调重用。这是一个 jsfiddle 演示:jsfiddle.net/jimschubert/56p9nxv5,打开控制台查看输出。
【解决方案2】:

@facebook 的comment 是他们的路要走。

使用bind

request(url, callbackFunction2.bind(p));
...
console.log(this); // p

阅读@facebook 的链接,了解如何在不弄乱this 的情况下进行操作,如果这对您的用例很重要。

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多