【问题标题】:Coffeescript + Backbone "Each" callback functionCoffeescript + Backbone“每个”回调函数
【发布时间】:2012-08-01 00:11:57
【问题描述】:

我的咖啡脚本/主干应用程序中有以下内容。问题是它在“每个”功能完成之前运行console.log(换句话说,在它为每个集合执行 create() 之前)。我想知道的是,是否可以使用某种我不知道的成功回调,以便在创建完成后运行 console.log。提前致谢!

wishlist.each (model) ->
  id = model.get('id')
  lineitems.create({product_id: id})
console.log "do this when finished!"

【问题讨论】:

  • 我没有看到任何 AJAX。 each() 会在幕后神奇地做一些延迟加载吗?

标签: backbone.js coffeescript


【解决方案1】:

我认为你很困惑。 Backbone.Collections 上的 each 函数不是异步的,它不会触发任何 AJAX 调用。 each 函数实际上来自与异步功能无关的下划线。

获取数据的异步 AJAX 调用称为 fetch,它确实有一个成功/错误回调:

wishlist.fetch
  success: -> console.log "success"
  error: -> console.log "error"

编辑

好的,所以您希望console.log 在所有创建完成后执行。首先,我所说的fetch 是真的。您可以添加successerror 回调。

lineitems.create {product_id: id}, 
    {success: @create_success, error: @create_error}

我会考虑增加每个 create 的计数,并减少每个 successerror 回调的计数。当你完成创建并且你的计数达到 0 时,你已经处理了所有的创建,你可以调用它。

【讨论】:

  • @muistooshort ???你在暗示什么?他告诉我们,console.log 发生在每个函数完成之前,这是一个同步函数。这没有意义。是的,Collection.create 是异步的,但我不确定您对“Ahem”的建议。
  • 不,他的意思是 console.log 在所有 create 调用完全完成之前执行,而 create 异步的,因为它使用了底层 AJAX。
  • 啊啊啊……我完全不清楚。那么,让我更新一下我的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多