查找多个回调何时完成时的编程模型
Posted
技术标签:
【中文标题】查找多个回调何时完成时的编程模型【英文标题】:Programming model when looking for when multiple callbacks are done 【发布时间】:2014-12-10 01:46:37 【问题描述】:我已经遍历了一些从数据库返回的项目。在获得所有数据之前,我不想将项目发送到渲染引擎。我不知道该怎么做是知道我什么时候拥有所有元素
data =
pizza.toppings (err, toppings)->
for topping in toppings
topping.flavors (err, flavors)->
data[topping.name] = flavors.length
return data
我将返回数据放在任何地方,它总是会立即返回。有没有办法构造此代码,以便仅在所有回调完成时返回 data
?
【问题讨论】:
不,您不能停止返回,但您可以将需要数据的操作移动到回调中。 【参考方案1】:我认为您需要像异步库这样的东西。看看这个:https://github.com/caolan/async 他们有几个 ControlFlow 功能,希望与您的 UseCase 相匹配。 或者,您也可以使用 Promises。
【讨论】:
【参考方案2】: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()
需要文字吗?
【讨论】:
以上是关于查找多个回调何时完成时的编程模型的主要内容,如果未能解决你的问题,请参考以下文章