coffeescript中array.forEach()的正确语法

时间:2012-07-19 18:46:44

标签: node.js syntax coffeescript

我在coffeescript中有以下代码递归列出目录(从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

正如您所看到的,我正在使用list.forEach (file) ->并且它正在运行。但是当我尝试用for file in list替换它时,它无法正常工作。我做错了什么?

1 个答案:

答案 0 :(得分:9)

你在循环中定义一个函数。 JS中常见的陷阱。你需要关闭迭代器。

for file in list then do (file) =>