Toutes les 3 secondes, je fais une requête AJAX POST pour obtenir l'état d'un processus. Cela fonctionne très bien. Lorsque le processus atteint 100%, une fonction de rappel s'exécute (indiquée ci-dessous) pour ajouter de nouveaux éléments à la page, puis annule la méthode setTimeout utilisée pour obtenir la progression en continu toutes les 3 secondes. Cependant, mes utilisateurs m'ont dit qu'il n'arrive parfois pas à annuler et que les nouveaux éléments ne sont pas ajoutés à la page et je suis resté bloqué pour montrer "100%".Est-ce que ce code JS fonctionne comme prévu?
Je l'ai testé encore et encore et il ne reste jamais bloqué pour moi. Le code semble également correct, mais mes compétences en JavaScript ne sont pas géniales, alors j'espérais que quelqu'un pourrait signaler s'il y a un potentiel de ce problème qui se passe?
J'ai commenté le code, excuse son très long. J'ai essayé de le réduire.
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);
}
}
"Est-ce que ce code JS fonctionne comme prévu?" - Je suppose que ça dépend de ce que tu espérais. – EBGreen
Cela fonctionne parfaitement pour moi à chaque fois. C'est juste qu'un ou deux utilisateurs ont dit qu'il est bloqué à "100%" et qu'il ne montre pas les éléments "Terminé". – Abs