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

标签 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 替换它时,它无法正常工作。我做错了什么?

最佳答案

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

对于列表中的文件然后执行 (file) =>

关于node.js - coffeescript 中 array.forEach() 的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567341/

相关文章:

javascript - Pebble 如何监视沙箱用户 javascript/expose api?

node.js - 在 node.js 中使用 redis

postgresql - 从postgresql中的内置函数和用户定义函数中进行选择的区别

jquery - 使用 asset .js.coffee 文件时出现 RuntimeError

javascript - 无法在Backbone模型listenTo中直接调用fetch

javascript - 用于在 json 中获取 token 的正则表达式

node.js - 如何在sailsjs中执行计划任务

node.js - "Can' t resolve 'fs' in bindings”导入redis时?

python - 在 Python 语法中调用函数

c - 在 C 中,冒号在声明中意味着什么?