说我想插入一组存储记录到数据库中,并调用回调时,他们所有完整:我应该如何处理由循环驱动的一组异步命令?
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
变量。在回调被触发之前处理所有插入是很重要的。我不想引入任何异步来同步库。这是一个脚本,而不是一个应用程序。
有没有更好的方式来做到这一点咖啡脚本?我想知道是否有一种我不知道的优雅咖啡解决方案。
据我所知,你想找到一个简单的咖啡的方式。恐怕还没有办法,也许有一天会有ES6的发电机。但BTW是不可能的连接SQL和做批量插入?这是MySQL吗?在进行服务器端编程时,我不会使用'async'或'Seq'。它比其他node.js程序员更容易阅读,而不是像'if i == stores.length - 1'这样的结构来检测你想要实现的内容。 – hgoebl
“但是BTW不可能将SQL连接成一个大容量插入?”是的,但我可以很容易地问这个问题的其他异步操作不能很好地连接。 – jcollum