Почему этот цикл 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 - пустой массив:[]

Почему я не так делаю?

Ответы на вопрос(1)

Ваш ответ на вопрос