Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.10.2011, 12:24
Новичок на форуме
Отправить личное сообщение для anty Посмотреть профиль Найти все сообщения от anty
 
Регистрация: 29.08.2011
Сообщений: 1

backboneJS, дождаться выполнения всех AJAX запросов.
В общем в представлении используется 2е разные коллекции. В инициализации представления пишу так:
initialize : function() {
	var self = this;
	this.model1.fetch({success: function(){ 
               			self.model2.fetch({success: function(){ 
											self.render();
										});
 				}});
}

И вот такая вложенность мне не очень нравиться, можно как нибудь от нее избавиться? Т.е. как лучше это сделать?
В идеале хотелось бы получить как у gmail.
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2011, 04:30
Новичок на форуме
Отправить личное сообщение для aleksp Посмотреть профиль Найти все сообщения от aleksp
 
Регистрация: 15.12.2011
Сообщений: 9

Странно, что никто так и не ответил тут. Задача на самом деле очень распространенная. Если топикстартеру ещё актульно, то подскажу. Тебе нужно изучить тему deferred-объектов в jQuery. Любой AJAX-запрос в последних версиях является таким объектом. Такие же объекты можно создавать и для своих нужд. Не буду вдаваться в подробности - в сети куча уже информации на эту тему. Конкретно в твоём случае решение таково:

Раз Model::fetch возвращает deferred-объект, значит делаем так
initialize: function() {

    var self = this;

    $.when(this.model1.fetch(), this.model2.fetch())
        .done(function() {
            // Здесь код в случае успешного выполнения всех запросов
            self.render();
        })
        .fail(function() {
           // Здесь код, если произошел сбой
        });
}


Здесь метод $.when() ждет когда будут выполнены все deferred объекты. Их может быть сколько угодно:
$.when(this.model1.fetch(), this.model2.fetch(), ...., this.modelN.fetch())

Последний раз редактировалось aleksp, 28.12.2011 в 04:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одновременное количество AJAX запросов decadent AJAX и COMET 18 03.06.2011 18:16
дождаться выполнения toggle maximu$$ jQuery 7 04.05.2011 14:58
Отследить окончание нескольких ajax запросов mikel AJAX и COMET 2 11.03.2011 17:14
Не приходят калбэки от Ajax запросов sundevil AJAX и COMET 22 04.10.2010 13:27
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54