我应该如何处理一组由循环驱动的异步命令



>假设我想将一组存储记录插入数据库,并在它们全部完成后调用回调:

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变量。在触发回调之前处理所有插入非常重要。我不想引入任何异步来同步库。这是针对脚本的,而不是应用程序。

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

你特别需要一种 CoffeeScript 的方式来做到这一点吗?我认为异步包将是一件好事。它具有许多函数,可让您串联或并行运行异步任务,并在所有完成后获得单个回调。

最新更新