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

est*_*rar 11 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);
    });
};
Run Code Online (Sandbox Code Playgroud)

例2

example.method = {
    foo: function(callback){
        setTimeout(function(){
            callback(null, 'foo');
        }, 100);
    }
}
Run Code Online (Sandbox Code Playgroud)

Exp*_*lls 31

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

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