寻找多个回调时的编程模型

时间:2014-12-10 01:46:37

标签: javascript orm callback coffeescript

我已遍历从数据库返回的一些项目。在拥有所有数据之前,我不想将项目发送到渲染引擎。我不知道该怎么做就知道什么时候我有所有的元素

data = {}
pizza.toppings (err, toppings)->
    for topping in toppings
        topping.flavors (err, flavors)->
            data[topping.name] = flavors.length

    return data

我把回程数据放在任何地方,它会立即返回。有没有办法构造这段代码,只有在所有回调都完成后才返回data

2 个答案:

答案 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()

需要言语吗?