JavaScript中事件循环的理解

JavaScript事件循环的理解​

JavaScript是单线程的,就是说在程序运行时同一时间只能做同一件事。这种设计会产生运行阻塞问题,如果说上一件事没做完,那么后面的事就都只能等着,为了解决这种问题的存在,就提出了一种运行机制-事件循环(Event Loop)

事件循环(Event Loop)

在JavaScript中,所有的任务都可以分为两种:

  • 同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行

  • 异步任务:异步执行的任务,比如ajax网络请求,setTimeout定时函数等

同步任务与异步任务的运行流程图如下:
JavaScript中事件循环的理解_第1张图片
根据上面这张图可以看出,首先任务进入执行栈,然后区分同步任务和异步任务,如果是同步任务就进入主线程开始执行,异步任务就会进入右边的任务队列等待,然后当主线程内的任务执行完毕后就去任务队列中读取对应的任务,推入主线程执行。 这个过程不断的重复就是事件循环。

备注:异步任务还会细分宏任务与微任务,具体可以参考这篇文章宏任务和微任务的理解

你可能感兴趣的:(javascript)