NodeJS回调,以null作为第一个参数

时间:2014-03-19 21:55:32

标签: node.js

我刚开始使用NodeJS并试图摆脱回调。

今天我在很多例子中看到null作为回调的第一个参数传递过来。请帮助我理解它为什么存在以及为什么需要它。

示例1

UserSchema.methods.comparePassword = function(pwd, callback) {
    bcrypt.compare(pwd, this.password, function(err, isMatch) {
        if (err) return callback(err);
        callback(null, isMatch);
    });
};

示例2

example.method = {
    foo: function(callback){
        setTimeout(function(){
            callback(null, 'foo');
        }, 100);
    }
}

1 个答案:

答案 0 :(得分:30)

按照惯例,回调的第一个参数通常用于表示错误。如果它不是null,则由于某种原因操作失败 - 可能是被调用者无法恢复但调用者可以从中恢复的内容。第一个之后的任何其他参数用作操作的返回值(成功消息,检索等)

这纯粹是按惯例,没有什么可以阻止你编写一个将成功作为回调的第一个参数传递的函数。如果您打算编写一个其他节点用户采用的库,您可能希望坚持使用约定,除非您有充分的理由不这样做。