У меня есть список языков, ['en', 'de']
и т. Д., И я хочу взять сложный запрос ajax для каждого языка. При первом запросе ajax я получаю количество процентов для каждого языка.Порядок отложенных запросов jquery ajax
var languages = ['en', 'de', 'es', 'fr', 'it', 'cn'];
intents_dic = [];
chart_quantity = ['quantity'];
for (var x = 0; x < languages.length; x++){
$.ajax({
url: 'url',
type: 'GET',
async: false,
success: function(data){
for (i in data){
intents_dic.push(data[i]['id'])
}
var intents_count = 0;
var deferreds = [];
И на втором этапе мне нужно подсчитать количество фраз для каждого намерения с предыдущего вызова. Я использую список отложенных для этой задачи.
for (var id = 0; id < intents_dic.length; id++){
deferreds.push($.ajax({
url: 'url',
type: 'GET',
success: function(data){
intents_count += data['templates'].length;
}
}))
}
$.when.apply(null, deferreds).done(function() {
chart_quantity.push(intents_count);
})
Но когда отложенные запросы Ajax завершены, порядок завершения отличается список языков порядка (это основной для построения диаграммы). Можно ли устранить эту проблему, или это функция вызовов ajax? Спасибо.
Да, это особенность. – Bergi
Не используйте 'async: false'! – Bergi
@ Bergi лучше использовать закрытие вместо запросов на синхронизацию? –