Node.js:为什么要在error handling期间返回一个callback的结果?

新手到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语句,但是当它为空时可以省略? 无论如何,我不明白函数的返回值可能会有什么用处,因为它在完成工作之后才会发生。 为什么它有所作为?

调用callback函数时使用return通常是为了防止后面的代码运行。 返回通常是不相关的。

这就是为什么在错误情况下需要它,所以也不会调用非错误情况的callback函数。

在非错误情况下不需要它,因为它已经是函数的最后一行。

你发布的error handling样板确实令人困惑。 它使用了expression代码的最简洁的方式,但确实令人困惑,而且您正确地忽略了返回值。 因此,我清楚的首选样板是

 if (error) { callback(error) return } 

我的感觉是稍微清晰一些,简洁的简洁对我来说并不重要(我用一个macros来input)。

我觉得这更清楚地expression了两个不同的意图:

  1. 把错误回复给调用者
  2. 退出function,因为没有任何其他有用的工作要做。 没有返回值,因为callback协议不需要一个,调用代码不需要,甚至可能不会将返回值捕获到一个variables。