2014-02-24 19 views
0

说我想插入一组存储记录到数据库中,并调用回调时,他们所有完整:我应该如何处理由循环驱动的一组异步命令?

insertStores = (db, stores, callback) -> 
    sql = "" 
    processed = 0 
    for store in stores 
    do (store) -> 
     # build sql 
     sql = "some built sql goes here" 

     processQuery(db, sql, -> 
     ++processed 
     if processed >= stores.length 
      callback?() 
    ) 

我不知道是否有做到这一点,将得到一个更可读的方式摆脱processed变量。在回调被触发之前处理所有插入是很重要的。我不想引入任何异步来同步库。这是一个脚本,而不是一个应用程序。

有没有更好的方式来做到这一点咖啡脚本?我想知道是否有一种我不知道的优雅咖啡解决方案。

+0

据我所知,你想找到一个简单的咖啡的方式。恐怕还没有办法,也许有一天会有ES6的发电机。但BTW是不可能的连接SQL和做批量插入?这是MySQL吗?在进行服务器端编程时,我不会使用'async'或'Seq'。它比其他node.js程序员更容易阅读,而不是像'if i == stores.length - 1'这样的结构来检测你想要实现的内容。 – hgoebl

+0

“但是BTW不可能将SQL连接成一个大容量插入?”是的,但我可以很容易地问这个问题的其他异步操作不能很好地连接。 – jcollum

回答

1

您是否特别需要CoffeeScript的方式来做到这一点?我认为Async package将是一件好事情使用。它有许多功能可让您以串行或并行方式运行异步任务,并在完成所有任务时获得单个回调。

+0

嗯,是的,那就是我所要求的。我正在寻找一个本地解决方案。我想知道是否有更好的方法来做到这一点,而不需要带上图书馆。 – jcollum

相关问题