Warum überträgt diese fs.readFile-Schleife ihre Ergebnisse nicht auf mein Array? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Warum bleibt meine Variable unverändert, nachdem ich sie innerhalb einer Funktion geändert habe? - Asynchrone Codereferenz 6 answers
#!/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)
}

Ich bin verwirrt, weilconsole.log(data) gibt die Daten aus:

<p>File 1</p>

<p>File 2</p>

Yet the finalresult ist ein leeres Array:[]

Warum mache ich falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage