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

Совет про синхронность тем страннее, чем дольше длится запрос моих данных ))

Что касаемо темы, вопрос решился таким образом. Не pure js, но все же.

var data, rawdata = this.data(), that = this;
    $.when(rawdata).then(function () {
        if(rawdata.responseText) {
            data = rawdata.responseText;
        } else {
            data = rawdata;
        }
        that.write(data);
    });


Оказалось что $.ajax возвращает ко всему прочему deferred объект, а $.when с этим делом работает. Если же функция которой я забираю данные из объекта возвращает любой другой, не deferred, то $.when "исполняет" сразу же дальнейшие действия. Вот и получается что такое простой проверкой я забираю любые данные и если они асинхронно получаемые - вставляю их по достижению результата.

Ну и при отсутствии значения responseText в возвращаемом значении, я только догадываюсь что это не аякс и вывожу само значение.

Возможно кто то сможет подсказать, как же именно мне узнать какой тип функции я получаю, что потом адекватно забирать из них данные.

p.s. Ну и не забывать передавать объекту в виде функции, возвращаемой нужные мне данные. Т.е. если мне понадобится передать попросту текст (что конечно абсурдно, но просто для примера) я задаю данные через функцию в виде
var data = function () {return 'Мои данные'};
myObject.setData(data);

Последний раз редактировалось Zalex, 01.06.2015 в 17:01.
Ответить с цитированием