我正在查看一个使用“ 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);
};
};
}
我的问题是:
和
我确实想知道答案是否在外部模块中,但我不知道...
(最后一点:我是Java和Node的自学新手,我敢打赌这对大多数人来说都是微不足道的,但是感谢您的任何解释和帮助。)
这称为错误优先回调,它不是语言功能,而是约定。
正如Fred K. Schott在Node.js方式-理解错误优先回调中所说的那样:
回调的第一个参数是为错误对象保留的。如果发生错误,它将由第一个err参数返回。
回调的第二个参数保留给任何成功的响应数据。如果没有发生错误,则err将被设置为null,并且任何成功的数据都将在第二个参数中返回。
基本上说的是,如果有任何错误,您可以通过检查第一个参数来知道。
对于任何基于回调的nodejs库,这都是预期的行为,您应该像设计界面一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句