我正在使用node.js中的http模块从url中读取。 http.get函数有this signature:
http.get(options[, callback])
回调函数只接受一个参数res。如果我想在回调中使用额外的对象/函数,我该怎么办?我可以考虑像这样内联get get:
outerFunction = function(xyz) {
http.get(options, (res) => {
// do stuff with xyz here
xyz(res.blah);
}
});
但是如果我的回调变长了,我想在某个地方预先声明它:
myCallback = function(xyz) {
return function(r) { xyz(r.blah); };
}
并像这样调用myCallback:
outerFunction = function(xyz) {
http.get(options, (res) => {
myCallback(xyz)(res);
});
}
但这似乎超级笨拙,只能绕过1-arg回调限制。
有更好的方法吗?谢谢!
答案 0 :(得分:0)
你可以使用这个代码,因为myCallback返回一个函数,然后在获取资源后,http会自动将res传递给xyz。
outerFunction = function(xyz) {
http.get(options,myCallback(xyz));
}
答案 1 :(得分:0)
您可以使用arguments对象。
arguments对象是一个可用的局部变量 功能。您可以在函数中引用函数的参数 通过使用arguments对象。该对象包含每个条目 传递给函数的参数,第一个条目的索引从 0
快速举例:
function test1234(a){
var args = arguments;
console.log(args); // prints -> 0: "a", 1: "b"
}
test1234('a', 'b');