5 Stimmen

Richtige Syntax für array.forEach() in Coffeescript

Ich habe folgenden Code in Coffeescript, um Verzeichnisse rekursiv aufzulisten (konvertiert von JavaScript):

fs = require 'fs'

walk = (dir, done) ->
  results = []
  fs.readdir dir, (err, list) ->
    return done(err) if err
    pending = list.length
    return done(null, results) unless pending
    list.forEach (file) ->
      file = "#{dir}\\#{file}"
      fs.stat file, (err, stat) ->
        if stat and stat.isDirectory()
          walk file, (err, res) ->
            results = results.concat(res)
            done null, results  unless --pending
        else
          results.push file
          done null, results  unless --pending

walk __dirname, (err, results) ->
  throw err if err
  console.log results

Wie Sie sehen können, verwende ich list.forEach (file) -> und es funktioniert. Aber wenn ich versuche, es durch for file in list zu ersetzen, funktioniert es nicht richtig. Was mache ich falsch?

10voto

Michael Ficarra Punkte 116

Sie definieren eine Funktion in einer Schleife. Ein häufiger Fallstrick in JS. Sie müssen den Iterator schließen.

für Datei in Liste, dann ausführen (Datei) =>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X