Node.js中惯用的成功回调

时间:2014-03-26 10:20:07

标签: javascript node.js asynchronous idioms

按照Node中的惯例,异步回调接受错误作为其第一个参数。如果成功,第一个参数不得出现。我个人习惯写

callback(undefined, result);

在那种情况下。但是,我在其他人的代码中看到了

callback(null, result);

盛行。它是正式的#34;记录在哪里?这两个选项中哪一个是惯用节点?是否有任何重要理由选择一个而不是另一个?

3 个答案:

答案 0 :(得分:9)

如果我们将“惯用节点”解释为“节点本身的作用”,那么null将是惯用的。如果您在Node提示符下输入此内容(在* nix机器上),您将获得true

require("fs").readFile("/dev/null", function (err) { console.log(err === null) })

我尝试过来自fs模块的其他回调并获得相同的行为。我没有在使用回调的Node API中测试所有位置。

在这种情况下,我找不到一个引用,指出Node 必须err设置为null

答案 1 :(得分:3)

如果您担心是否使用null vs undefined,请使用null。严格来说,在JavaScript undefined中被认为是异常的。

您可以在What is the difference between null and undefined in JavaScript?了解更多信息。

还有关于Node.js回调约定的好文章 - http://blog.gvm-it.eu/post/22040726249/callback-conventions-in-node-js-how-and-why

答案 2 :(得分:0)

如果出现错误,undefinednull始终被视为相同。

您可以同时使用它们。人们只使用null,因为它更短。

如果您正在检查错误,可以使用if (err == null) { ... }方法在一个语句中检查null和undefined。