如果没有错误,回调是否应该传递null或undefined?

ord*_*anj 1 javascript node.js

我希望这是一个简单的问题.回调的最佳做法是哪种?

选项1:

function get (id, callback) {
    var topic = find(id);
    var err = new Error('Sorry, ' + id + ' is not a valid id.');
    err.status = 404;
    return (topic) ? callback(null, topic) : callback(err);
}
Run Code Online (Sandbox Code Playgroud)

选项2:

function get (id, callback) {
    var topic = find(id);
    var err = new Error('Sorry, ' + id + ' is not a valid id.');
    err.status = 404;
    return (topic) ? callback(undefined, topic) : callback(err);
}
Run Code Online (Sandbox Code Playgroud)

旁注,find()返回undefined,而不是null.

提前致谢.

T.J*_*der 6

我会做Node内置API函数所做的事情.

一个微不足道的实验告诉我:

  • open经过nullerr成功.

  • opennull失败时传递数据参数.


其他几点:

  1. 你的代码总是构造一个Error对象,即使事情有效.我不会这样做,这是毫无意义的.

  2. 您的代码返回调用回调的结果.这很不寻常.

  3. 据我所知,你的代码正在同步调用回调.(例如,在调用时get,回调将在get返回之前发生.)通常,异步调用是异步调用.如果你正在做同步的东西,像openSync和这样的,把Sync上的名字和返回值,而不是直接调用回调函数.