我想要获取几个Backbone.js模型,然后在完成所有提取后调用回调函数。必须在其他模型之前获取一个模型才能获得它的id。我现在拥有的是:
doFetch: (model) ->
model.set('first_model_id', @firstModel.get('id'))
model.fetch()
doAsyncStuff: (callbackFn) ->
$.when(
@firstModel.fetch()
).done( =>
$.when(
@doFetch @secondModel,
@doFetch @thirdModel
).done( =>
callbackFn()
)
)
问题是在@secondModel和@thirdModel提取解析之前调用了callbackFn。如果我将一个doFetch调用的结果分配给本地var并在调用callbackFn之前查看其状态,它通常是“已解决”但有时仍处于“挂起”状态。为什么内部何时/不等待所有这些调用解决?
答案 0 :(得分:0)
你是关闭内部的语法,它导致第三个doFetch作为第二个参数完成。以这种方式重写它似乎解决了它。我也改用.then,因为我认为在这种情况下它会使代码更清晰。
doFetch: (model) ->
model.set('first_model_id', @firstModel.get('id'))
model.fetch()
doAsyncStuff: (callbackFn) ->
$.when(
@firstModel.fetch()
).then( =>
$.when(
@doFetch @secondModel
@doFetch @thirdModel
)
).done( =>
callbackFn()
)
我刚刚在@doFetch @secondModel