【问题标题】:Node.js CoffeeScript async style and loopsNode.js CoffeeScript 异步样式和循环
【发布时间】:2012-03-20 11:16:39
【问题描述】:

我正在尝试使用coffeescript 学习node.js,但无法理解流程。

我的第一个任务是解析一个 csv 文件并将解析后的记录添加到 mongodb。到目前为止,这是我所拥有的:

https://gist.github.com/1953474

我使用了一个简单的计数器变量,addRule 函数在调用时递增,在回调结束时递减,检查它是否是最后一个完成的,以便可以调用 exit。我认为这是正确的形式,但如果有更合适的方式,我愿意接受建议。

我遇到的真正问题是没有任何东西被解析或添加到数据库中。最初我意识到我并没有等待建立连接,但现在我被难住了。我想知道我是否错过了一些关于我应该如何使用猫鼬的细节......

想法?

【问题讨论】:

  • 告诉我们 cmets 打印的内容(来自 util.print),除此之外,我建议避免使用 mongoose 并改用本机驱动程序。

标签: node.js asynchronous coffeescript


【解决方案1】:

您的计数器特别有两个错误。

如果记录数为零,您不会调用退出。

你的递减是在之后而不是之前。 n_out-- 返回n_out--n_out 返回n_out - 1

你的另一个错误是使用 CoffeeScript,你会后悔的。

addRules = (records) ->
  n_out = 1
  next = () ->
    if --n_out is 0
      exit()
  next()
  addRule = (r) ->
    n_out++
    util.print n_out
    Rule.update {state: r.state}, r, {upsert: true}, (err) ->
      if err
        util.print r.state + ": " + err + "\n"  
      else 
        util.print "processed " + r.state + " rule\n"
      next()
  addRule(r) for r of records 

【讨论】:

  • 就是这个 AND... 没有使用 gist.github.com/1954107@Raynos:为什么对 CoffeeScript 有偏见?
  • 嗯,好吧,但对我来说,更有效率胜过那种纯粹的感觉。我发现 CoffeeScript 很好地融合了我喜欢 Ruby 和 Python 的东西,但性能通常更好——我猜对每个人来说都是他自己的。再次感谢您对此的帮助!
  • @Tim 让我知道您开始调试时生产力是否保持不变 :)
猜你喜欢
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 2015-06-05
  • 2015-02-27
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
相关资源
最近更新 更多