Это наш код внутри одной функции. Я только начинаю поправляться с BackboneJS.Два выборки и данные BackboneJS заменяются
// let's pull desktop data
this.desktop = new desktopItemModel({device: 'desktop'});
this.desktopPromise = this.desktop.fetch();
// let's pull mobile data
this.mobile = new mobileItemModel({device: 'mobile'});
this.mobilePromise = this.mobile.fetch();
// I'm not sure if the previous developer was trying to implement similar to $q.all
this.allPromise = [desktopPromise, mobilePromise];
$.when(this.desktopPromise).done(_.bind(function() {
// do your desktop stuff
}, this));
$.when(this.mobilePromise).done(_.bind(function() {
// do your mobile stuff
}, this));
if (this.allPromise) {
$.when.apply($, this.allPromise).done(_.bind(function() {
// do your stuff here if desktop
....
// do your stuff here if mobile
....
}, this));
}
Я заметил, что времена, когда наши данные в нашей переменной смешиваются между настольными и мобильными. Ответ от сервера api в порядке. Я действительно подозревал, что команда API вернула нам неправильные данные, пока я не отлаживал наше приложение, это был наш код, который делал что-то странное.
Как это можно реорганизовать, чтобы данные не смешивались? Кто-то сказал мне в irc, «обещания имеют странное поведение».
Не могли бы Вы описать проблемы с Вашими данными? Что такое смешивание? Этот код немного определяет порядок выполнения кода - третья часть не обязательно будет первой. Обещания не странные, они классные :) – antejan
Когда это. mobilePromise выполняется, мы вызываем другую функцию, чтобы получить дополнительную информацию, необходимую для мобильных устройств. Тем не менее, мне было интересно, почему значение атрибутов было из desktopPromise. Я добавил точку останова в .done этого.mobilePromise. Это происходит не часто, но это происходит. – devwannabe
Возможно, третий блок может работать до второго. У вас есть какая-то логика изменения данных в этой третьей? Я продолжу отвечать, чтобы предоставить некоторый код. – antejan