Вот функция первого получения списка файлов, для каждого файла, он будет вызывать АЯКС функцию, чтобы выполнить что-то:Для продолжения цикла цикла, когда функция внутри завершена?
function getImagesList(folder) {
$.ajax({
type:"POST",
url: "getImgList.php",
data: {"data":folder},
dataType: "json",
success: function (data) {
var IsfirstLoggingItem = "true";
for (var key in data) {
//alert (data[key]);
pdfToImgExec (data[key],IsfirstLoggingItem,folder,1);
$('#pdfToImgResult').append('<p>Processing ' + data[key] + ' <img src="loading.gif" height="20" width="20"/></p>');
IsfirstLoggingItem = "false";
}
folder == 'Incoming' ? getImagesList('result') : pdfToImgResult();
},
error: function(x, t, m) {
$('#pdfToImgResult').html('<p>Error</p>');
alert (t);
releaseBtn();
}
});
}
Это функция вызываемая, она содержит функцию АЯКС выполнить что-то
function pdfToImgExec(file,IsfirstLogging,folder,round){
var postString = file + '&' + IsfirstLogging + '&' + folder;
$.ajax({
type: "POST",
url: "pdfToImgExec.php",
data: {"data":postString},
dataType: "html",
success: function (data) {
if (data) {
$('#pdfToImgResult').html('').append('<p>Finish processing ' + file + '</p>');
} else if (!data && round < 4) {
$('#pdfToImgResult').html('').append('<p>Encounter error in processing ' + file + ' , retrying ' + round + ' round </p>');
round++;
pdfToImgExec(file,IsfirstLogging,folder,round);
}
},
error: function(x, t, m) {
$('#pdfToImgResult').html('errpr');
alert (t);
releaseBtn();
}
});
}
Короче говоря, функция getImagesList получает список файлов для каждого файла, вызывая функцию pdfToImgExec для выполнения некоторых функций ajax. Проблема в том, что он не будет ждать окончания работы ajax, но начнет следующий цикл.
Это значит, что бы я хотел (а) file1 running ajax staff => file1 finish ajax staff => file2 running ajax staff => file2 finish => проверить результат
Однако в текущей ситуации файл1 работает ajax staff => file2 running ajax staff => check result => file1 finish/file2 finish
Я попытался async: false, cache: false в обеих функциях, но, похоже, не помогает, как его исправить? благодаря
вы можете настроить обратный вызов в 'getImgList.php' как функцию, основанную на setInterval, которая будет циклически выполняться при выполнении' pdfToImgExec.php', это дело. Это те же самые бэкэнды? Почему бэкэнд не заботится обо всех этих операциях, если существует такая плотная корреляция между этими двумя операциями? – gillyspy
Извините, вы имеете в виду, что серверы могут обрабатывать порядок выполнения без какого-либо php-кода? – user782104
Я предлагаю вам два варианта. первый вариант - это интерфейсный способ управления циклом путем «контроля» его через 'setInterval'. по второму варианту ... Если вы управляете бэкэнд, я бы сделал один запрос AJAX на один серверный сервис, который выполняет оба действия. – gillyspy