Я работаю над приложением Backbone, и сложность возрастает. Одним из побочных эффектов является то, что иногда начальная загрузка страниц идет медленно. Я проследил эту проблему до ожидаемого запроса AJAX.Назначение отложенного объекта (jqxhr) модели или коллекции
В некоторых из моих текущих маршрутов я делаю что-то вроде 4 отдельных запросов. Некоторые из них важны, как загрузка шаблона. Поэтому я использую функцию done() из запроса jQuery ajax для передачи обратного вызова, который продолжает загрузку страницы.
Иногда мне нужны данные для небольшого незначительного элемента. Например, запрос, загружающий последние 5 сообщений в блоге. Теперь я думал, что хочу сделать запрос как можно скорее, не останавливая выполнение остальной части маршрута, и я хочу знать, когда он будет готов.
Так вот мое предложение
var myModel = new Posts(); //instantiate the model
myModel.dfd = myModel.fetch();
, а затем позже в смежном ракурсе, который обрабатывает сообщения элемента имеет метод, который получает модель передается и сделать что-то вроде этого
render : function() {
var self = this;
this.model.dfd.done(function() {
this.html(template(self.model.toJSON());
}
}
Идея состоит в том, что если запрос уже завершен, он будет выполняться немедленно, а если нет, он будет ждать. Но, по крайней мере, я получаю выгоду от временного спада до тех пор, пока он не достигнет этого момента.
Это хорошая идея?
Не могли бы вы включить код, в котором инициализируется ваш вид, и вызывается метод 'render()'? – Lukas
«Это хорошая идея?». Вы говорите нам. Это работает? –
@ Beetroot-Beetroot да это прекрасно работает. Но пока не уверен, сколько из преимуществ производительности я получаю. – Daniel