当前位置: 代码迷 >> 综合 >> JS的执行机制(EventLoop、宏任务和微任务)
  详细解决方案

JS的执行机制(EventLoop、宏任务和微任务)

热度:80   发布时间:2023-12-01 21:42:39.0

目录

1、EventLoop

1. JavaScript 是单线程的语言

2.同步任务和异步任务

 3. 同步任务和异步任务的执行过程?编辑

 4. EventLoop 的基本概念?编辑

 4. 结合 EventLoop 分析输出的顺序?编辑

2、宏任务和微任务 

1.什么是宏任务和微任务

2. 宏任务和微任务的执行顺序?编辑 

3.去银行办业务的场景(举例)

 4. 分析以下代码输出的顺序?编辑

5. 经典面试题


 

1、EventLoop

1. JavaScript 是单线程的语言

JavaScript 是一门单线程执行程语。也,同时间一件事情。

单线程执行任务队列问题:

如果前一个任务非常的任就不直等,从程序题。

2.同步任务和异步任务

为了防止某个耗时任导致,JavaScript 把待执行的任务分了两

①  同步任务(synchronous)

又叫 非耗时任务 的是 线 程上 队执 些任务
只有前一个任务执行 毕, 行后 个任务

②  异步任务(asynchronous)

又叫 耗时任务 ,异 任务由 JavaScript 委托给 宿主环境进 执行
当异步任务执行完成 JavaScript 主线程 执行异步任务

 3. 同步任务和异步任务的执行过程

同步任务由 JavaScript 主线程次序执行

异步任务委托给宿主境执行

已完成的异步任的回,会被加入到任务队列中等执行

JavaScript 主线程的执行栈被清后,会 读取任务队列中的回函数执行

JavaScript 主线程不断重复上面 4

 4. EventLoop 的基本概念

JavaScript 主线程从“任务队列中读异步

任务的回调函数,放执行次执。这 个过程是循环不断的所以这种行机 制又称EventLoop

 4. 结合 EventLoop 分析输出的顺序

正确的输出结果:ADCB中:

A D 属于 同步任 。会 据代 的先 依次 执行
C B 属于 异步任务 。它们的 调函 加入 任务 ,等 主线 时再

2、宏任务和微任务 

1.什么是宏任务和微任务

JavaScript 把异步任务又做了进步的分,务又为两别是:

宏任务(macrotask)

Ajax 请求、
setTimeout setInterval
文件操作
其它宏任务

微任务(microtask)

Promise.then .catch .finally
process.nextTick
其它微任务

 

2. 宏任务和微任务的执行顺序 

每一个宏任务执行完后,存在的微

如果有,则执行完所微任,再续执个宏务。

3.去银行办业务的场景(举例)

小云和小腾去银行办务。号之排队

宏任务队列

假设当前银行网点只一个小云办理务时小腾

单线 ,宏任 按次 执行

小云办完存款业务后柜员是否想办

当前宏任务执行完 查是 有微

小云告诉柜员:想要理财再办信用后再换点念币?

执行微任务,后 务被

小云离开柜台后,柜开始办理

所有微任务执行完 行下 任务

 4. 分析以下代码输出的顺序

正确的输出顺序是:2431

分析:

先执行所有同步任务

执行第 6 行、第 12 行代码

再执行微任务

执行第 9 行代码

再执行下一个宏任务

执行 2 行代码

5. 经典面试题

请分析以下代码输出顺序较长截取中右 3 个部分)

正确的输出顺序是:156234789