【发布时间】:2017-07-19 13:19:20
【问题描述】:
我正在使用 node.js 中的 http 模块来读取 url。 http.get 函数有this signature:
http.get(options[, callback])
回调函数采用单个参数 res。如果我想在回调中使用额外的对象/函数,我该怎么办?我可以考虑像这样内联 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 回调限制。
有没有更好的方法?谢谢!
【问题讨论】:
-
为什么
myCallback返回一个函数而不是接收两个参数? -
如果你要返回一个函数,那么你可以这样做:
http.get(options, myCallback(xyz))。但是,如果您只是要在箭头函数中调用myCallback,那么它可能会同时接收两个参数:http.get(options, res => myCallback(xyz, res))
标签: javascript closures nested-function