Я использую код, как показано ниже.
var firstCollection = new FirstCollection();
$.when( firstCollection.fetch( params1 )).done(function() {
// here firstCollection has been enriched. It contains the actual data.
// params2 will depends on firstCollection attirbutes
var secondCollection = new SecondCollection();
$.when( secondCollection.fetch( params2 ) ).done(function() {
// here secondCollection has been enriched. It contains the actual data.
// move to another screen
}).fail( function() {
} );
}).fail(function() {
}).always(function() {
});
Моя цель состоит в том, чтобы выполнить два вызова в последовательности, т. firstCollection
Выполнить выборку firstCollection
а затем выборку secondCollection
. Мотивация заключается в том, что вторая выборка зависит от атрибутов firstCollection
.
Поэтому мой вопрос заключается в следующем. Есть ли лучшая альтернатива для достижения этого с помощью jQuery Deferred или решение, которое я использую, является правильным?
Может быть, что-то вроде этого:
var firstCollection = new FirstCollection();
var secondCollection = new SecondCollection();
this.listenTo(firstCollection, 'reset', scndfetch);
firstColllection.fetch(params1).then(function(data){ })
scndfetch = function(){
secondCollection.fetch(params2).then(function(data){
//data has model/collection
});
}
Когда коллекция загружается, происходит событие синхронизации/сброса. Слушайте это, и secondCollection может начать загрузку.