Привет всем. У меня есть, кажется, тривиальная проблема. У меня есть следующий JavaScript:
$(function() {
var r = GetResults();
for(var i = 0; i < r.length; i++) {
// Do stuff with r
}
});
function GetResults() {
$.getJSON("/controller/method/", null, function(data) {
return data;
});
}
Из-за того, что я вызываю метод асинхронно, сценарий продолжает выполняться, и когда он встречает цикл for, r
, очевидно, еще не будет иметь значение. Мой вопрос: когда у меня есть метод, который выполняет асинхронную операцию, и я зависим от данных, которые он возвращает обратно в главном блоке, как мне остановить выполнение, пока данные не будут возвращены? Что-то вроде:
var r = GetResults(param, function() {
});
где функция является функцией обратного вызова. Я не могу переместить обработку цикла for в функцию обратного вызова запроса JSON, потому что я повторно использую функциональность GetResults по всей странице, если не хочу дублировать код. Есть идеи?