将参数传递给Node.JS中的http.get

时间:2015-07-23 13:46:44

标签: javascript node.js http

我正在做一个http或https get请求(取决于url),我想将同一个回调函数传递给http或https get请求。
我的问题是我还想将另一个参数传递给回调函数 我该怎么办?

例如,如何将myParameter传递给回调函数?

var myParameter = 1
if(url.indexOf('https') === 0 ) {
    https.get(url, callbackFunc);
else{
    http.get(url, callbackFunc);
}

function callbackFunc(res, myParameter){}

2 个答案:

答案 0 :(得分:4)

创建一个返回callbackFunction的函数,将自定义参数存储在闭包中

function createCallback(myParam) {
    return function(res) {
           console.log(res, myParam);
    }
}

var myParameter = 1
if(url.indexOf('https') === 0 ) {
    https.get(url, createCallback(myParameter));
else{
    http.get(url, createCallback(myParameter2));
}

您也可以使用额外的匿名功能

var myParameter = 1
if(url.indexOf('https') === 0 ) {
    https.get(url, function(res){
       myCallback(res, param1);
    });
else{
    http.get(url,  function(res){
       myCallback(res, param2);
    });
}

或者您可以按Function.bind()的建议使用Peter Lyons。第二个和后续参数将在调用时参数之前传递给您的回调。

答案 1 :(得分:3)

首先,将callbackFunc的参数顺序更改为

function callbackFunc(myParameter, res) {

}

(myParameter首先我们可以绑定它,如下图所示,然后是res)

然后你可以这样做:

var boundCallback = callbackFunc.bind(null, myParameter);

当您拨打http或https get时,请使用boundCallback代替callbackFunc