我正在做一个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){}
答案 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
。