javascript - À partir de quelle période commence le délai de setTimeout?
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-07-05 11:03:30
0
3
1294

setTimeout(fn,200), le temps spécifié ici signifie-t-il qu'il est calculé dès le démarrage du programme ? Ou devrions-nous attendre que la tâche du thread principal soit terminée et rappeler la liste des tâches asynchrones avant de lancer le calcul ?

女神的闺蜜爱上我
女神的闺蜜爱上我

répondre à tous(3)
世界只因有你

C'est un peu compliqué à expliquer
Tout d'abord, vous devez comprendre que Javascript est monothread, ce qui signifie que toutes les tâches doivent être mises en file d'attente. Ensuite toutes les tâches seront divisées en deux catégories : les tâches synchrones et les tâches asynchrones ! Tâches synchrones : les tâches exécutées sur le thread principal n'exécuteront la tâche suivante qu'une fois la tâche précédente terminée ! Tâches asynchrones : tâches qui n'entrent pas dans le thread principal mais entrent dans la « file d'attente des tâches ». Lorsque les tâches sur le thread principal sont terminées, le thread principal exécutera la « file d'attente des tâches ».

Pour setTimeout(fn,200),当到200ms时,fn会被放进“任务队列”,而“任务队列”必须要等到主线程已有的代码执行完才会执行fn,所以当程序执行到setTimeout(fn,200)这一行时,时间就开始计算,但是fnle temps d'exécution réel n'est pas forcément après 200ms, il peut être après un temps plus long (en fonction du temps d'exécution du code de synchronisation sur le thread principal).

学霸

Pour faire simplesetTimeout(fn,200)需要等到当前函数调用栈(主进程上的同步任务)清空之后才开始执行,会在下一轮事件循环(主线程从"任务队列"中读取事件)开始时执行,setTimeoutSeul l'événement est inséré dans la "file d'attente des tâches". Le temps défini ici est l'intervalle par rapport au temps de début du prochain tour de boucle d'événements.

巴扎黑

Le temps commence lorsque setTimeout(fn,200) est appelé.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal