Зачем нужна переменная errored
?Node.js fs - зачем нужна эта проверка?
var fs = require('fs')
var path = require('path')
module.exports = function (dir, cb) {
fs.readdir(dir, function (er, files) { // [1]
if (er) return cb(er)
var counter = files.length
var errored = false
var stats = []
files.forEach(function (file, index) {
fs.stat(path.join(dir,file), function (er, stat) { // [2]
if (errored) return
if (er) {
errored = true
return cb(er)
}
stats[index] = stat // [3]
if (--counter == 0) { // [4]
var largest = stats
.filter(function (stat) { return stat.isFile() }) // [5]
.reduce(function (prev, next) { // [6]
if (prev.size > next.size) return prev
return next
})
cb(null, files[stats.indexOf(largest)]) // [7]
}
})
})
})
}
Код с позиции в блоге по http://strongloop.com/strongblog/node-js-callback-hell-promises-generators. Там он говорит: «errored boolean, чтобы предотвратить вызов вызываемого вызова (cb) более одного раза, если возникает ошибка». Может ли кто-нибудь объяснить это мне? При каких обстоятельствах cb можно называть более одного раза?
Чтобы остановить ранний случай, если вы получите сообщение об ошибке – SLaks