1

我有 3 个模型我需要在初始化我的应用程序之前从服务器成功获取数据

ModelA.fetch()
ModelB.fetch()
ModelC.fetch()

我会$.Deferred()为此使用还是在spine.js中有更好的选择?

4

1 回答 1

2

我最终得到了这个实现:

为每个模型创建一个 deferred

@modela = new $.Deferred()
@modelb = new $.Deferred()
@modelc = new $.Deferred()

然后在模型完成获取时绑定事件

ModelA.bind 'refresh', => @modela.resolve()
ModelB.bind 'refresh', => @modelb.resolve()
ModelC.bind 'refresh', => @modelc.resolve()

最后在一切都完成后解决承诺

$.when(
  @modela, @modelb, @modelc
).then(
  @appReady,
  @appError
)

当成功获取所有模型时调用 appReady。

于 2012-12-21T00:11:10.220 回答