Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变量传递给嵌套回调函数_Javascript_Node.js - Fatal编程技术网

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

Javascript 如何将变量传递给嵌套回调函数,javascript,node.js,Javascript,Node.js,我正在使用requestnpm获取http页面。我有类似的东西 function callbackFunction1() { var p = 'foo'; request(url, callbackFunction2); } function callbackFunction2(err, response, body){ } 如何将变量p作为callbackFunction2的参数传递 我认为您需要给出所有3个参数 您可以将匿名函数作为第二个参数传递,如bellow reques

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

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

  request(url, callbackFunction2);
}

function callbackFunction2(err, response, body){

}

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

我认为您需要给出所有3个参数

您可以将匿名函数作为第二个参数传递,如bellow

request(url, function(err, response, body){
    callbackFunction2(err,response, body, p);
});
@facebook是他们的出路

使用


阅读@facebook的链接,看看如何在不弄乱
这个
的情况下进行操作,如果它在您的用例中很重要。

您可以将p变量放在第一个callbackfunction 1之外,然后将其作为普通变量放在callbackfunction 2中。这将解决您的问题:在这种情况下
p
是什么?您是希望完全替换
body
参数,还是希望将其作为额外参数传递?我希望传递额外参数我认为您还需要在匿名回调函数中将err和response作为参数CallbackFunction 2的参数是三个,那么我应该传递四个parameters@Mazzy 我有点困惑,为什么要传递4个参数,当函数只需要3个参数时,您将如何使用它?请求回调函数需要三个参数@MatthiasPosch是正确的,所有三个参数后跟第四个局部参数都需要传递给原始回调。除非其他对
request
的回调重用了回调,否则不内联定义回调是没有意义的。下面是一个JSFIDLE演示:,打开控制台查看输出。
request(url, callbackFunction2.bind(p));
...
console.log(this); // p