我如何使用Node.js和Q编写服务器端异步代码。 我是新来的承诺(我是新来的,一般异步编程),和我有一点麻烦,我一直无法通过在Q文件盯着解决。 这里是我的代码(这是CoffeeScript的 - 让我知道如果你想看到的JavaScript代替):
templates = {}
promises = []
for type in ['html', 'text']
promises.push Q.nfcall(fs.readFile
, "./email_templates/#{type}.ejs"
, 'utf8'
).then (data)->
# the problem is right here - by the time
# this function is called, we are done
# iterating through the loop, and the value
# of type is incorrect
templates[type] = data
Q.all(promises).then(()->
console.log 'sending email...'
# send an e-mail here...
).done ()->
# etc
希望我的评论说明了问题。 我想通过一个类型列表进行迭代,然后运行的承诺为每种类型的链,但问题是,值type
正在发生变化的承诺的范围之外。 我认识到,这样的短名单,我可以展开循环,但是这不是一个可持续的解决方案。 我怎么能保证每个诺言看到的不同但局部正确的值type
?