Каждые 3 секунды я делаю запрос AJAX POST, чтобы получить статус процесса. Это прекрасно работает.
Когда процесс достигает 100%, выполняется функция обратного вызова (указано ниже) для добавления новых элементов на страницу, а затем отменяется метод setTimeout, который используется для непрерывного получения прогресса каждые 3 секунды. Тем не менее, мои пользователи сказали мне, что иногда не удается отменить, и новые элементы не добавляются на страницу, и я застрял при показе «100%».
Я проверял это снова и снова, и оно никогда не застревает для меня. Код также выглядит хорошо, но мои навыки JavaScript невелики, поэтому я надеялся, что кто-то может указать, есть ли вероятность возникновения этой проблемы?
Я прокомментировал код, извиняюсь, он очень длинный. Я пытался уменьшить его.
function convertNow(validURL){
startTime = setTimeout('getStatus();', 6000);
//AJAX CALL TO RUN PROCESS
$.ajax({
type: "GET",
url: "main.php",
data: 'url=' + validURL + '&filename=' + fileNameTxt,
success: function(msg){
//ON SUCCESS CLEAR SETTIMEOUT AND SHOW ELEMENTS (text)
clearTimeout(continueTime);
clearTimeout(startTime);
$("#loading").hide("slow");
$("#done").html("Done");
}//function
});//ajax
}//function convertNow
function getStatus(){
//AJAX CALL TO GET STATUS OF PROCESS
$.ajax({
type: "POST",
url: "fileReader.php",
data: 'textFile=' + fileNameTxt,
success: function(respomse){
textFileResponse = respomse.split(" ");
$("#done").html("Processing...");
}
});//ajax
clearTimeout(continueTime);
if(textFileResponse[0]=='100.0%'){
clearTimeout(continueTime);
}
else{
clearTimeout(startTime);
continueTime = setTimeout('getStatus();', 3000);
}
}