[AJAX] requète AJAX en boucle
bonjour,
Pour faire tourner en boucle une appli Ajax asynchrone, j'utilise setTimeout que je lance dès que je reçois la réponse de ma requete
Code:
1 2 3 4 5 6 7 8 9 10 11
|
if(xhr.readyState == 4 && ajax.Req.status == 200) {
...
...
xhr.onreadystatechange = null
xhr.abort()
xhr = null
setTimeout(function(){makeReq()},delayReq*1000)
} |
=> j'utilise cette méthode pour avoir l'état d'un appareil
=> je voudrais aussi que l'utilisateur puisse lancer manuellement des requètes pour donner des ordres à l'appareil. Donc j'ai créé un bouton qui lance cette fonction :
Code:
1 2 3 4 5 6 7 8 9 10
|
function sendAction(){
if (xhr){
xhr.onreadystatechange = null
xhr.abort()
xhr = null
}
makeReq(postvalue)
} |
makeReq(postvalue) créer une requète xhr => si postvalue est vide, je crée une requete xhr avec la methode GET sinon je crée une requète xhr avec la methode POST + la valeur de postvalue.
=> le problème avec cette methode, c'est que ça crée des doublon d'appel de setTimeout ce qui réduit le temps de rafraichissement des infos (ce que je ne veux pas) => il y a des setTimeout qui tournent en même temps.
Comment faire pour résoudre mon problème ?
est-il possible de savoir si un setTimeout sur la fonction makeReq est actif ?