Функции, которые принимают обратный вызов, часто форматируют обратный вызов так, что первый аргумент, предоставленный для обратного вызова, является ошибкой, если обнаружена какая-либо ошибка, а вторым аргументом является успешное извлеченное значение (если ошибка не обнаружена).Это именно то, что здесь происходит.Если destination
или filename
связаны с чем-то, что может вызвать ошибку, то первый аргумент, который вы передаете cb
, может быть ошибкой, например:
destination: function (req, file, cb) {
if (!authorized) {
cb(new Error('You are not authorized to do this!'));
return;
}
cb(null, '/tmp/my-uploads')
}
Причина в том, что если первыйАргумент - это ошибка, модуль, передающий cb
, поощряется к использованию и проверке первого аргумента, что позволяет правильно обрабатывать ошибки.
Если ошибка была передана как аргумент second ,например, ленивым программистам было бы просто проигнорировать это и определить обратный вызов так, чтобы он смотрел только на первый аргумент.