Почему этот цикл fs.readFile не отправляет свои результаты в мой массив? [Дубликат]
На этот вопрос уже есть ответ:
Почему моя переменная не изменилась после того, как я изменил ее внутри функции? - Ссылка на асинхронный код 6 ответов#!/usr/bin/env node
var fs = require('fs')
, async = require('async')
, program = require('commander')
program
.version('0.0.1')
.usage('<keywords>')
.parse(process.argv)
async.waterfall([
fs.readdir.bind(fs, __dirname),
parseHTML,
], saveResult)
function parseHTML(files, callback) {
var result = []
files.forEach(function(file) {
if (file.match(/\.html$/)) {
fs.readFile(file, 'utf8', function(err, data) {
if (err) throw err
result.push(data)
})
}
})
callback(null, result)
}
function saveResult(err, result) {
console.log(result)
}
Я в замешательстве, потому чтоconsole.log(data)
выводит данные:
<p>File 1</p>
<p>File 2</p>
Еще финалresult
- пустой массив:[]
Почему я не так делаю?