0
我有幾個Backbone.js模型,我想要獲取,然後在所有提取完成後調用回調函數。一個模型必須在其他模型之前獲取,以取消id。我現在就像是:jQuery當沒有等待所有延遲解決
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()
)
)
問題是callbackFn是@secondModel之前被調用和@thirdModel取得到解決。如果我將一個doFetch調用的結果賦值給一個局部變量,並在調用callbackFn之前查看它的狀態,它通常會被「解析」,但有時仍然是「待定」。爲什麼內心在等待所有這些電話解決?
我不知道CoffeeScript的,但是,當我該腳本轉換爲JS,我看到一個奇怪的現象。你的內在時間是這樣寫的:'$ .when(_this.doFetch(_this.secondModel,_this.doFetch(_this.thirdModel)))。done(function(){'這看起來不像你想要的格式。注意第三個模型的dofetch是如何在第二個模型的調用之內的,這導致內部只有等待第二個模型完成,而不是第三個模型。 –