Conseil setInterval en js

Le problème exposé dans ce sujet a été résolu.

En fait, c’est un problème qu’a JS et de nombreux langages. Le fait d’attendre X unités de temps n’est pas strictement garanti, au sens que la tâche peut être réveillée un peu avant (ou un peu après) les X unités de temps d’attentes. C’est principalement dû à l’ordonnancement des threads et la fréquence de l’horloge.

Il est impossible d’arrivée à pile X unités de temps, les plus par des langages peuvent réveiller le thread soit un peu à près des X unités, ce qui n’est pas trop gênant du moment que ce n’est pas trop tard après, ou un peu avant les X unités ce qui peut être un méga problème dans certains types d’applications (qui ne seront pas codé en Js de toute façon^^). Certains langages comme Ada garantissent que la tâche se réveillera jamais avant les X unités qu’on a définis.

Bref, tout cela pour dire que pour l’utilisation que tu en as, ça ne causera aucun problème de mon point de vue.

Après, où as tu appris que setInterval n’est pas fiable ? Fiable dans quel sens ?

+0 -0

Cc les amis j’aimerai avoir des conseils contenant setInterval dans mon site je dois mettre ajout chaque minute des elements d’un div mais j’aurai appris que setInterval n’est pas fiable. Pourriez me donner des conseils ou alternatives? Merci :D

melo96

Je ne suis pas sûr de tout comprendre de ton message, mais si tu travailles sur une résolution qui se compte en minute, je ne pense pas que la légère dérivation éventuelle du setInterval doit t’importer. Ça aurait une importance si tu travaillais à la milliseconde. Par exemple, si tu voulais mettre à jour une frame toute les 16.67 ms pour un rendu en 60 FPS, auquel cas, setInterval ne serait clairement pas adapté.

C’est un tchat et je voudrais que a gauche de ma page les utilisateurs puisse leurs amis connecter donc chaque 30 secondes je fais une mise ajout.

Et je prendrais en compte si l’onglet est actif ou non pour doubler/tripler le timing si la page n’est pas visible.

Tu veux dire quoi par la?

Lorsqu’un onglet n’est pas actif (c’est-à-dire en arrière plan) : le délai d’un setInterval/setTimeout inférieur à une seconde sera automatiquement augmenté à une seconde.

Donc si tu fais un setInterval/setTimeout de 1 ou de 20ms et qu’il dépasse ~900ms c’est que l’onglet n’est pas actif.

(Le comportement n’est pas un standard mais appliqué par plusieurs navigateurs).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte