предупреждение: этот вопрос пытается быть общим, поэтому я использую псевдокод. Это скорее техника, чем реальное решение очень специфической проблемы.
Моя проблема в том, что у меня есть функция, которая выполняет несколько асинхронных вызовов на сервер для сбора информации, и я хочу использовать результат этой функции в другой функции. Как можно умерить время, пока результаты не будут на самом деле?
Пример псевдокода:
var getsomething = function(objs) {
var results = objs.map(getsomethingforoneobj);
$.when.apply(this,results).done(function() {
var result;
for (var i = 0; i < arguments.length; i++) {
//do something with the data to augment the variable 'result'
}
console.log("load finished");
console.log(result);
return result;
});
}
var getsomethingforoneobj = function(obj) {
var url = "blabla"
return $.ajax({
async:true,
url:url,
success : function(data) {
return data;
}
});
}
$(function() {
var myobjs = [{},{},{},...]
var a = getsomething(myobjs); //this is where I would want to temporize
var b = a_function_of_a(a);
//use b in the rest of the code
});
Одно из решений, очевидно, состоит в том, чтобы делать все синхронно, но я понял, что это очень плохая форма.
Вся помощь приветствуется!