var nextFileError = 0; // Ошибок загрузки файлов
function nextFile(remainingFiles, fileClass, fileFolder, fileLogin, filePass) { // Отправка следующего файла для последовательной обработки
let next = remainingFiles.pop(); // В ajax отправляется последний элемент, остальные сохраняются для рекурсии
$.ajax({
type: "POST",
url: "ajax/get_part_allfiles.php",
data: {data: next, class: fileClass, folder: fileFolder, login: fileLogin, pass: filePass}
}).done(function(result) {
if (result.length > 2) {
console.log(result);
nextFileError++;
}
if (nextFileError === 1) {
$('#allfilesResult').removeClass('mess-good').addClass('mess-common');
}
if (nextFileError > 0) {
$('#allfilesResult').html('Производится копирование файлов. Осталось: ' + remainingFiles.length + ', ошибок: ' + nextFileError);
} else {
$('#allfilesResult').html('Производится копирование файлов. Осталось: ' + remainingFiles.length);
}
console.log('Точка 2 - ' + remainingFiles.length);
if (remainingFiles.length > 0) {
nextFile(remainingFiles, fileClass, fileFolder, fileLogin, filePass); // Рекурсия тут
} else {
console.log('Точка 4');
}
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log('Ошибка ajax ' + textStatus + ': ' + errorThrown);
});
console.log('Точка 3 - ' + remainingFiles.length);
}
$(document).ready(function () {
// Отправка файлов на изменение из мастера настроек
if ($("div").is("#allfiles")) {
let allfiles = $.parseJSON($('#allfiles').html());
$('#allfilesResult').removeClass('st-none');
if ($.isArray(allfiles) && allfiles.length > 0) {
nextFile(allfiles, $('#allfiles').attr('data-class'), $('#allfiles').attr('data-folder'), $('#allfiles').attr('data-login'), $('#allfiles').attr('data-pass')); // Тут запускаем функцию
console.log('Точка 1'); // Этого не происходит
if (nextFileError === 0) {
$('#allfilesResult').html('Копирование файлов успешно завершено.');
} else {
$('#allfilesResult').removeClass('mess-good').addClass('mess-common').html('Копирование файлов завершено. Ошибок: ' + nextFileError + '. Посмотрите ошибки <a href="customization.php?type=paramcommon">здесь</a> и обратитесь к разработчику.');
}
} else {
$('#allfilesResult').removeClass('mess-good').addClass('mess-common').html('Нет файлов, которые нужно копировать.');
}
}
После отработки скрипта в консоли следующее (привожу только последние записи):
Точка 3 - 2
Точка 2 - 2
Точка 3 - 1
Точка 2 - 1
Точка 3 - 0
Точка 2 - 0
Точка 4
Пожалуйста, подскажите, почему скрипт не доходит до "Точка 1"? Соответственно, не выполняется и то, что написано после.