如何将变量传递给嵌套的回调函数

4
我正在使用request npm包来获取http页面。我的代码如下:
function callbackFunction1() {
  var p = 'foo';

  request(url, callbackFunction2);
}

function callbackFunction2(err, response, body){

}

我该如何将变量 p 作为回调函数 callbackFunction2 的参数传递?

你可以将变量p放在第一个callbackFunction1之外,然后在callbackFunction2中像普通变量一样使用它。 - Adam M.
1
这将解决你的问题:https://dev59.com/dGYr5IYBdhLWcg3wOXwQ - eguneys
1
在这种情况下,p是什么?您是要完全替换body参数还是要将其作为额外参数传递? - James
我想要传递一个额外的参数。 - Mazzy
2个回答

5
我认为您需要提供所有三个参数。
您可以像下面这样将匿名函数作为第二个参数传递。
request(url, function(err, response, body){
    callbackFunction2(err,response, body, p);
});

1
我认为你需要在匿名回调函数中将 err 和 response 作为参数。 - Matthias Posch
1
callbackFunction2的参数有三个,所以我应该传递四个参数。 - Mazzy
@Mazzy 我有点困惑,为什么你要传递4个参数,当函数只需要3个参数时,你将如何使用它? - Mritunjay
请求回调函数需要三个参数 https://www.npmjs.org/package/request - Mazzy
@MatthiasPosch 是正确的,需要将所有三个参数以及第四个本地参数传递给您原始的回调函数。如果不是被 request 的其他回调函数重用,内联定义回调函数其实并没有太多意义。这里有一个 jsfiddle 示例:http://jsfiddle.net/jimschubert/56p9nxv5/,打开控制台查看输出结果。 - Joseph Yaduvanshi

0

@facebook的评论是值得推荐的。

使用绑定

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

阅读@facebook的链接,了解如何在不影响您的用例的情况下完成它,而不会弄乱this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接