Выполнение асинхронных и синхронных вызовов параллельно в ajax

Меня немного смущает идея асинхронных и синхронных вызовов ajax. Можно ли сделать один вызов ajax асинхронно с последующим синхронным вызовом ??

Вот мой сценарий,
Я пытаюсь создать индикатор выполнения в реальном времени, чтобы показать отсутствие данных, вставленных там, где postdata () вставляет данные в таблицу, в то время как функция getprocess () возвращает текущее количество данных, вставленных для отображения в индикаторе выполнения.

Ссылка :: делает прогресс бар

function getprogress(data){
console.log(data);
$.ajax({
method: 'POST',
url: '<?php echo base_url()?>setting/processoffline/getprogressdata',
data:{ table:data },
dataType: 'json',
async: false,
success: function(val) {

var  off=parseFloat(Number(val.dataoffline),10);
var  on=parseFloat(Number(val.dataonline),10);
var    percent=Math.round((off/on)*100);

// $('#'+data+'success').addClass('hidden');
console.log('offline- '+off);
console.log('online- '+on);
$('#'+data+'progressbar').css('width',percent+"%");
$('#'+data+'progressbar').html(percent+"%" + off+' out of '+on );
if(percent=='100'){
console.log(percent);
// $('#'+data+'progressbox').addClass('hidden');
$('#'+data+'success').removeClass('hidden');
$('.download').removeAttr('disabled','disabled');
// clearTimeout();
}
console.log(postComplete);
if (!postComplete)
setTimeout( function() { getprogress(data); }, 1500);
} ,
error: function() {
if (!postComplete){
setTimeout( function() { getprogress(data); }, 1500);
}
}

});
}
function postdata(data)
{
// if(!data)$.ajax({
method: 'POST',
url: '<?php echo base_url()?>setting/processoffline/processdata',
data:{ master_table:data },
dataType: 'html',
success: function() {
postComplete = true;

},
error: function() {
postComplete = true;
}

});
}

Теперь вот как я вызываю эти функции для использования

 $(this).parent('td').parent('tr').siblings('tr').children('td').find('input:checked').each(function(){

data=$(this).attr('id');
postdata(data);
$('#'+data+'success').addClass('hidden');
$('#'+data+'progressbox').removeClass('hidden');i++;

getprogress(data);
if(!postComplete)
setTimeout( function() { getprogress(data);}, 2);

Здесь функция postdata () вызывается несколько раз в цикле асинхронно, мой случай заключается в том, что поскольку цикл может быть неограниченным числом, это может запустить множество параллельных процессов, которые могут повесить мою систему, поэтому. Мне нужно запустить следующий цикл только для postdata () когда предыдущий процесс завершен. Функция postdata () делает ajax-вызов для функции php, что требует много времени. Поэтому я использую асинхронное определение функции postdata (), чтобы я мог вызывать функцию getprogress () параллельно, но (не знаю, если это возможно) Я хочу вызывать getprocess ajax call синхронно, чтобы цикл ожидал окончания значения, возвращаемого getprogress. Таким образом, я могу начать новый процесс в ajax call только после завершения предыдущего процесса.

Я хочу знать, если это возможно или нет, и если нет, как я могу справиться с этой проблемой. Извините за плохой английский, и если неясно, пожалуйста, прокомментируйте, и я придерживаюсь этого в течение 3-4 дней.
заранее спасибо

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]