JavaScript运行机制

•第一轮宏任务执行结束,开始执行微任务 打印 '微事件1' '微事件2'

异步任务——>event table——>注册回调函数——>event queue——>**读取任务队列中的结果,进入主线程执行**

掘金上面盗张图记录一下


我们看看打印结果

4.主线程 从event  queue中读取 回调函数success 并执行

金沙官网线上 1

              异步任务***

• 遇到 Promise, new Promise 直接执行 输出 外层宏事件2

分析:1.ajax进入Event Table,注册回调函数 success()

•第一轮微任务执行完毕,执行第二轮宏事件,打印setTimeout里面内容'内层宏事件3'

3.ajax事件完成,回调函数 进入event queue

宏任务

 

# 浏览器 Node
setTimeout
setInterval
setImmediate x
requestAnimationFrame x

 

二.Javascript事件循环

金沙官网线上, 


• 执行then 被分发到微任务Event Queue中``


流程图:

先看个例子


             同步任务

外层宏事件1
外层宏事件2
微事件1
微事件2
内层宏事件3

总结

1.js的异步

js是一门单线程的语言,无论是什么新框架新语法实现的所谓异步,都是用同步的方法去模拟的

2.事件循环event  Loop

事件循环是js实现异步的一种方法,也是js的执行机制

3.js的执行与运行

js在不同的环境下,不如node,浏览器等,执行方式是不同的

运行大多指js解析引擎,是统一的


作者:ssssyoki

链接:https://juejin.im/post/59e85eebf265da430d571f89

macrotask 和 microtask 表示异步任务的两种分类。


本文由金沙官网线上发布于Web前端,转载请注明出处:JavaScript运行机制

您可能还会对下面的文章感兴趣: