Je crée un petit jeu dans JS où beaucoup d'événements se produisent et souvent en même temps (comme modifier les éléments html ou globals js variables ..)Comment gérer plusieurs événements en même temps?
Pour gérer cela, j'utilise un "setInterval" "qui boucle toutes les 1ms pour regarder dans une table s'il y a quelque chose à faire (" demandes ")
Je remplis la table chaque fois que j'ai besoin de changer quelque chose sur la page, mais parfois j'ai besoin de changer plusieurs choses à la en même temps.
Le problème est qu'il ne se met pas à jour en même temps, il est retardé lorsqu'il y a 2,3 demandes ou plus en même temps. Je voudrais que ce soit instantané et s'il y a 2 demandes ou plus à faire en même temps, il devrait le faire en même temps et ne pas retarder chaque requête (exemple de requêtes: mise à jour de la largeur d'un div en jquery) .
Merci pour l'aide ..
var queue = {};
var fixedUpdate = setInterval(function() { //do all the requests in queue
$.each(queue, function(key, val) { //for each request present in the queue
//do something (requests are about updating display or some global variables)
/*...*/
//after completing the request we delete it from the queue
delete queue[key];
});
}, 1);
Vous ne pouvez pas vous attendre à ce que 'setInterval' vous donne un intervalle fixe - il peut varier beaucoup, et 1ms est généralement une résolution trop fine. – caasjj
c'est une mauvaise nouvelle :(y at-il une alternative? – Owow
vous allez dans le mauvais sens - JS n'est pas un environnement en temps réel, c'est un environnement asynchrone.Sans savoir plus de ce que vous faites, il est difficile de vous donner des pointeurs, mais pour mettre à jour quoi que ce soit à l'écran, vous devez vous connecter à 'requestAnimationFrame'. – caasjj