我已遍历从数据库返回的一些项目。在拥有所有数据之前,我不想将项目发送到渲染引擎。我不知道该怎么做就知道什么时候我有所有的元素
data = {}
pizza.toppings (err, toppings)->
for topping in toppings
topping.flavors (err, flavors)->
data[topping.name] = flavors.length
return data
我把回程数据放在任何地方,它会立即返回。有没有办法构造这段代码,只有在所有回调都完成后才返回data
?
答案 0 :(得分:0)
我认为您需要像异步库这样的东西。看一下这个:https://github.com/caolan/async 他们有几个ControlFlow功能,希望与您的UseCase匹配。 或者你也可以使用Promises。
答案 1 :(得分:0)
data = {}
pizza.toppings (err, toppings) ->
_toppingLength = toopings.length
doSomethingFinally = ->
if _toppingLength is data.length
console.log("done!!")
for topping in toppings
topping.flavors (err, flavors) ->
data[topping.name] = flavors.length
doSomethingFinally()
需要言语吗?