Node.js:为什么要在错误处理期间返回回调的结果
Node.js: Why should you return the result of a callback during error handling?
Node.js新手。我通过NodeSchool.io上的教程学习Node.js,在我们学习模块的一个教程中,我们被要求编写如下代码:
// Some code...
function filteredLs(dir, ext, callback) {
fs.readdir(dir, function(err, files) {
if (err)
return callback(err); // return statement necessary here...
callback(null, withExtension(files, ext)); // ...but not here
})
}
module.exports = filteredLs;
我的问题是,在这样的例子中,为什么在处理错误时需要包含return
语句,而在它为null时可以省略它?无论如何,我看不出函数的返回值对readdir
有什么用处,因为它发生在它完成工作之后。为什么会有不同?
在调用回调函数时使用return
通常是为了防止后面的代码运行。返回的值通常是不相关的。
这就是为什么在错误情况下需要它,所以不调用非错误情况的callback
调用。
在无错误的情况下不需要它,因为它已经是函数的最后一行了。
您发布的错误处理样板确实令人困惑。它使用了一种最简洁的方式来表达代码,但确实令人困惑,而且返回值被丢弃是正确的。因此,为了清晰起见,我首选的样板是
if (error) {
callback(error)
return
}
我觉得这一点稍微清晰一些,简洁性的降低对我来说并不重要(我用宏观的方式打字)。
我发现这是为了更清楚地表明,这里表达了两个不同的意图:
- 将错误气泡返回给调用者
- 退出函数,因为没有其他有用的操作。没有返回值,因为回调协议不需要返回值,调用代码也不需要,甚至可能不会将返回值捕获到变量中
相关文章:
- 函数表达式,返回回调函数
- 如何“;等待”;以便返回回调
- jQuery,动画和动画返回.回调函数错误?:S
- 节点.js AMQP 不返回回调
- 返回回调函数 Node.js 的数据
- 承诺不返回回调数组
- 使用 jsonp 和 php 返回回调
- 订阅子作用域上的事件,并在broadcastemit中返回回调
- 为什么angular返回回调函数内部的函数
- Node.js:为什么要在错误处理期间返回回调的结果
- 如何构造代码以返回回调
- 具有HTTP请求的Meteor方法不返回回调
- 我如何返回回调MySQL查询和推到一个数组在Node.js
- 如何从使用node-oracledb的查询返回回调
- 直接调用回调或返回回调
- 设置变量返回回调监听器
- 泛型池函数返回回调的结果
- 回调中的AWS返回回调
- 我应该返回回调还是直接运行它
- 节点HTTPS请求没有在Lambda中返回回调函数