Совет про синхронность тем страннее, чем дольше длится запрос моих данных
))
Что касаемо темы, вопрос решился таким образом. Не 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);