recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - À partir de quelle période commence le délai de setTimeout?

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 ?

女神的闺蜜爱上我女神的闺蜜爱上我2740 Il y a quelques jours1314

répondre à tous(3)je répondrai

  • 世界只因有你

    世界只因有你2017-07-05 11:05:30

    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).

    répondre
    0
  • 欧阳克

    欧阳克2017-07-05 11:05:30

    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.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-07-05 11:05:30

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

    répondre
    0
  • Annulerrépondre