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
=> j'utilise cette méthode pour avoir l'état d'un appareil
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) }
=> 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 :
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.
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) }
=> 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 ?
Partager