Эй, все. У меня, как представляется, тривиальная проблема. У меня есть следующий 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;
});
}
Из-за того, что я вызываю метод асинхронно, script продолжает выполнение, и когда он встречает цикл for, r
, очевидно, пока не получит значения. Мой вопрос: когда у меня есть метод, выполняющий асинхронную операцию, и я зависим от возвращаемых данных в главном блоке, как остановить выполнение до тех пор, пока данные не будут возвращены? Что-то вроде:
var r = GetResults(param, function() {
});
где функция является функцией обратного вызова. Я не могу переместить обработку цикла for в функцию обратного вызова запроса JSON, потому что я повторно использую функции GetResults несколько раз на всей странице, если только я не хочу дублировать код. Любые идеи?