有没有一种优雅的方式异步映射对象或数组在coffeescript? (或JavaScript)coffeescript异步映射
想象我有一些事情在一个对象:
things =
x:
...
y:
...
z:
...
thingCount = 3
我希望创建一个将各处理这些事情,并返回处理对象的方法。该进程必须进行异步调用以获取有关每个事物的一些信息。 一开始我尝试只是为了遍历性,像这样:
processThings = (callback) ->
processedThings = {}
count = 0
for key,val in things
asyncJob key,val (err,result) ->
if err
callback error
else
# PROBLEM: key has the incorrect value here
processedThings[key] = result
count += 1
if count == thingCount
callback null,processedThings
的问题是,在循环键的值更改。所以我的解决办法是,这样的关键变量包含在其闭包内创建一个子功能:
processThings = (callback) ->
processedThings = {}
count = 0
processThing = (key,val) ->
asyncJob key,val (err,result) ->
if err
callback error
else
processedThings[key] = result
count += 1
if count == thingCount
callback null,processedThings
processThing key,val for key,val of things
但男孩你好这肯定是的fugly。是否有这样的首选模式?
使用[图效用](https://github.com/Raynos/after.js/blob/master/src /after.js#L64) – Raynos 2012-01-28 00:08:56
“后”看起来像一个很好的图书馆雷诺斯 - 谢谢! – mainsocial 2012-01-28 19:35:57