【问题标题】: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

【问题讨论】:

  • 不,您不能停止返回,但您可以将需要数据的操作移动到回调中。

标签: javascript orm callback coffeescript


【解决方案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()
    

    需要文字吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2019-09-30
      • 2013-12-23
      相关资源
      最近更新 更多