我的coffeescript / backbone app中有以下内容。问题是它在“每个”函数完成之前运行console.log(换句话说,在为每个集合完成create()之前)。我想知道的是,如果有一些类型的成功回调我可以使用,我不知道为了在创建完成后运行console.log。提前谢谢!
wishlist.each (model) ->
id = model.get('id')
lineitems.create({product_id: id})
console.log "do this when finished!"
答案 0 :(得分:1)
我觉得你很困惑。 each
上的Backbone.Collection
函数不是异步的,它不会触发任何AJAX调用。 each
函数实际上来自Underscore,它与异步功能无关。
获取数据的异步AJAX调用称为fetch
,它确实有成功/错误回调:
wishlist.fetch
success: -> console.log "success"
error: -> console.log "error"
修改强>
好的,所以你希望在所有创作完成后执行console.log
。首先,我所说的fetch
对于创造是正确的。您可以添加success
和error
个回调。
lineitems.create {product_id: id},
{success: @create_success, error: @create_error}
我会考虑为每create
增加一个计数,并在每个success
和error
回调中递减计数。当您完成创建并且您的计数达到0时,您已经处理了所有创建,您可以回拨它。