У меня есть этот код:
var file_id = [];
async.auto({
encrypt_pass: function(callback, pass) {
pool.query('SELECT blabla FROM hmm WHERE id=?',[1], function (err, rows, fields) {
if (!rows.length) return callback('password retrieve failed');
callback(null, rows[0].blabla));
})
},
file_user: ['encrypt_pass', function(results, callback) {
console.log('file_id[id] ... ' + file_id[id]);
if (!file_id[id]) {
start_file_read(id);
console.log('reading file ...' + id);
}
}]
}, function(err, results) {
if (err) res.end(); return console.log(err)
console.log('all OK without errors...')
})
function start_file_read(id) {
file_id[id] = 'code that reads my file';
}
Что я получаю из console.log undefined
, поэтому я не могу использовать массив глобальных переменных, который заполнен функцией start_file_read(id)
массив заполненкод, который читает файл так, что file_id[id]
определен в этой функции, но приведенный выше код получается каждый раз, когда я запускаю async.auto
функцию undefined ... как это исправить, чтобы глобальные переменные определялись в async.auto
?
У меня есть эта проблема, потому что, если я вызываю несколько раз async.auto, он получает каждый раз, когда файл читается, так что я имею, тогда, если я вызываю, например, функцию 10times async.auto, она читает файл 10 раз, потому что глобальная переменная file_id
не определена .. Любая помощь приветствуется, потому что я пытаюсь через 3 дня безуспешно.
Спасибо