JavaScript的运行机制:JavaScript中的事件循环

一、前提:

  1.JavaScript是单线程语言,代码从上到下执行。

  2.JavaScript通过回调函数处理异步。

  3.除了广义的同步任务和异步任务,任务还被更精细的定义为宏任务和微任务:

    宏任务:整个script代码块、setTimeout、setInterval

    微任务:Promise的.then、process.nextTick

  4.宏任务和微任务有各自独立的事件队列。

 

二、概述:JavaScript是运行机制是事件循环。

 

三、使用事件循环处理异步任务:

  1.从上到下执行代码,同步任务直接进入主进程依次执行,异步任务写入事件列表。

  2.当事件列表里的某个异步任务的异步事件完成时,将其移动到事件队列。

  3.主进程的同步任务依次执行完毕时,检查事件队列,如果事件队列里有异步任务,则执行事件队列里的异步任务。

  4.重复执行2-3,直到代码执行完毕。

 

四、使用事件循环处理异步任务,区分宏任务和微任务:

  1.整个script代码块作为宏任务,进入主线程执行。

  2.从上到下执行代码,同步任务直接进入主进程依次执行,异步任务写入事件列表。

  3.当事件列表里的某个异步任务的异步事件完成时,将其移动到事件队列。

  4.在3中,宏任务移动到宏任务的事件队列,微任务移动到微任务的事件队列。

  5.script代码块作为宏任务执行首先完。

  6.检查微任务的事件队列,看是否有异步任务,有则执行。

  7.检查宏任务的事件队列,看是否有异步任务,有则执行。

  8.重复执行6-7,直到代码执行完毕。

 

posted @ 2021-10-24 01:29  starlog  阅读(44)  评论(0编辑  收藏  举报