我在 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
替换它时,它无法正常工作。我做错了什么?
最佳答案
您正在循环中定义一个函数。 JS 中的一个常见陷阱。您需要关闭迭代器。
对于列表中的文件然后执行 (file) =>
关于node.js - coffeescript 中 array.forEach() 的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567341/