Обратный вызов NodeJS с нулевым значением как первый аргумент

Я только что начал с 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

По соглашению в node первый аргумент обратного вызова обычно используется для указания ошибки. Если это что-то другое, кроме null, операция по какой-то причине была неудачной - возможно, что-то, что вызываемый не может восстановить, но что вызывающий может восстановить. Любые другие аргументы после первого используются как возвращаемые значения из операции (сообщения об успешности, поиск и т.д.).

Это чисто по соглашению, и нет ничего, что помешало бы вам написать функцию, которая успешно проходит в качестве первого аргумента для обратного вызова. Если вы планируете написать библиотеку, принятую другими пользователями node, вы, вероятно, захотите придерживаться соглашения, если у вас нет оснований для этого.