Показать сообщение отдельно
  #5 (permalink)  
Старый 30.05.2015, 16:17
Новичок на форуме
Отправить личное сообщение для Zalex Посмотреть профиль Найти все сообщения от Zalex
 
Регистрация: 22.01.2014
Сообщений: 7

Сообщение от kostyanet Посмотреть сообщение
Обычно делается так

var stat = new Stat;

ожидание команды

поступила команда

получение данных соотв команде

получили данные

stat.setData(new Date()).write();

ожидание команды

команда, нужны данные соотв команде, получили данные

stat.setData(new Date()).write();

ожидание команды...

Ну или так

stat.write(data); или не так?
Существует конструктор (для удобства я буду называть класс) Source, в котором регистрируется множество объектов, реализующих Stat, именно он (объект source) вызывает методы отрисовки в массиве конечных объектов и он не знает и знать не должен реализацию отрисовки. Соответственно мой метод write должен забрать из объектов реализующих класс Stat свойство data, которое в моем случае может быть как получаемое по ajax, так и статическое, например Дата-время или любое другое значение, и отрисовать. Но! Когда я забираю данные , то мой метод write не ждет естественно , а забирает ровно то, что есть на текущий момент в ссылке на переменную и если там аякс - то он не дожидается результата. И тут вопрос, как же сделать так, чтоб одним методом можно было забрать данные и если они получаемые асинхронно, то метод отрисовки ждал бы сначала результата, а потом продолжал бы работать (естественно не вешал бы остальной код).

Один товарищ тут подсказал про jQuery Deffered https://api.jquery.com/category/deferred-object/ смотрю читаю. Думаю это решит вопрос.
Ответить с цитированием