выполнить функцию по завершению другого, использовать ajaxComplete ()? - PullRequest
1 голос
/ 21 марта 2009

две функции должны быть выполнены в Javascript, вторая только после завершения первой.

Первый заполняет массив getJSON, а второй манипулирует им.

Однако getJSON является асинхронным, поэтому он не приостанавливает порядок выполнения, чтобы заставить программу работать должным образом, чтобы массив завершил загрузку до того, как вторая функция сможет выполняться. Как можно использовать ajaxComplete () Jquery или обратный вызов getJSON, чтобы просто запустить вторую функцию после завершения загрузки данных через getJSON.

Спасибо.


вот код:

function fetch_ids(user) 
var url = 'http://test.com/ids/' + escape(user) + '.json?callback=?';
// populate array ids[] with JSON data --uid[] array declared globally
$.getJSON(url, function(data) {
for( var i = 0; i < data.length; i++ ) ids[i] = data[i];
});
// test array and run alert
for(i=0;i<uid.length;i++){
for(j=0;j<ids.length;j++){
if(uid[i]==ids[j])
{alert('matched: ' + uid[i]);}
}
}
// finish test
}

Ответы [ 2 ]

4 голосов
/ 21 марта 2009

Разве это не работает?

$.getJSON(url, params, function (jsonData){
  // populate array
  // call 2nd function.
});

В худшем случае, если ваши 2 функции уже определены в другом месте:

$.getJSON(url, params, function (jsonData){
  firstFunction(jsonData);
  secondFunction(jsonData);
});
0 голосов
/ 21 марта 2009

Проверьте этот похожий пост ... Как инициировать другой вызов jQuery .ajax на основе результата первоначального вызова .ajax?

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

...