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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?