Javascript Node.js中惯用的成功回调
根据节点中的约定,异步回调接受错误作为其第一个参数。如果成功,第一个论点不得出现。我个人过去常常写作Javascript Node.js中惯用的成功回调,javascript,node.js,asynchronous,idioms,Javascript,Node.js,Asynchronous,Idioms,根据节点中的约定,异步回调接受错误作为其第一个参数。如果成功,第一个论点不得出现。我个人过去常常写作 callback(undefined, result); 那样的话。然而,我在其他人的代码中看到 callback(null, result); 占主导地位。是否在任何地方“正式”记录?这两个选项中哪一个是惯用节点?有什么重要的原因可以选择一个而不是另一个吗?如果您关心是否使用null和undefined,那么选择null。严格来说,在JavaScript中,未定义的被认为是不正常的 你可以
callback(undefined, result);
那样的话。然而,我在其他人的代码中看到
callback(null, result);
占主导地位。是否在任何地方“正式”记录?这两个选项中哪一个是惯用节点?有什么重要的原因可以选择一个而不是另一个吗?如果您关心是否使用null和undefined,那么选择null。严格来说,在JavaScript中,未定义的
被认为是不正常的
你可以在网站上阅读更多关于这方面的内容
还有一篇关于Node.js回调约定的文章-。如果我们将“惯用节点”解释为“节点本身的功能”,那么null
就是惯用的。如果在节点提示下(在*nix机器上)键入此项,将得到true
:
require("fs").readFile("/dev/null", function (err) { console.log(err === null) })
我尝试了来自fs
模块的其他回调,得到了相同的行为。我还没有测试Node的API中使用回调的所有地方
我没有找到一个引用,该引用说明在这种情况下节点必须将err
设置为null
。在出现错误的情况下,未定义的和null
始终被认为是相同的
两者都可以使用。人们使用null仅仅是因为它较短
如果要检查错误,可以使用If(err==null){…}
方法在一条语句中检查null和undefined。如果回调遵循检查该参数的惯用方法(即If(error)
或If(!error)
),则没有任何区别。如果回调坚持严格检查(例如错误===null
或错误!==undefined
),然后你必须首先传递它所期望的值。是的,这更像是定义undefined和null的含义。如果你只需查看Node.js源代码包(或GitHub上)的lib/
文件夹中任何这些模块的源代码,我看不出有任何理由对其进行测试。