【发布时间】:2016-08-15 07:37:33
【问题描述】:
我正在查看一个使用“if (err) {//code//);”的 Node.js 代码示例语句来控制其函数的输出 - 但是当调用函数时,我看不到任何传递给它们的东西,就好像“err”参数是由幕后的不可见代码定义的......
下面的代码是异步的,并使用 SDK 中的外部模块,请注意。
/* "client.sendEvent" sends the data contained within the variable "message"
to its destination, when this is complete the callback function "printResultFor"
is called and a string is passed to that */
client.sendEvent(message, printResultFor('Message'));
//printResultFor looks like this:
var printResultFor = function (op) {
return function printResult(err, res) {
if (err) console.log(op + ' error: ' + err.toString());
if (res) {
console.log(op + ' status: ' + res.constructor.name);
};
};
}
我的问题是:
- 为什么这个回调函数需要返回一个嵌套函数?
和
- “err”和“res”的值是如何传递给这个嵌套函数的?
我确实想知道答案是否在外部模块中,但我不知道...
(最后注:我是 Javascript 和 Node 的自学新手,我敢打赌这对大多数人来说是微不足道的,但感谢您提供的任何解释和帮助。)
【问题讨论】:
-
与
Event对象提供给addEventListener()中的回调的方式相同。
标签: javascript node.js