当前位置: 首页 > 网络应用技术

[高级前端]微任务,宏任务,异步阻塞,事件周期的详细解释

时间:2023-03-06 00:04:00 网络应用技术

  从最简单的开始

  当上述代码加一点修改时

  说明:在编译上面的代码之后会变成吗?

  会将.Then()回调函数投入到微型任务队列中吗?

  然后,概念()回调函数将输入微型练习队列。

  执行宏任务后,将执行概念微观任务

  因此,这里将在最后打印。

  将上述代码添加到关键字async,等待

  那么此代码的微/宏任务将被解析为

  可以发现执行顺序台。Log('2')在等待。

  等待关键字的概念将阻止以下代码的执行。

  在这里,添加上面的代码以添加关键字等待

  说明:在上面段落中等待关键词的异步将变成?

  因此与先前的概念结合在一起:然后输入微型任务队列

  这就是这样

  然后分析getDetail功能

  然后结合先前的概念:等待关键字将阻止以下代码的执行

  这就是这样

  因此与先前的概念结合在一起:然后输入微型任务队列

  那么,这句话是什么意思以及如何执行它呢?

  可以理解为

  将微任务本身作为宏任务

  由微任务抛出的微任务用作微任务

  然后结合先前的概念:执行宏任务后将执行微任务

  形成一个周期

  此过程称为事件循环。

  可以直观地看到以下代码

  更重要的是?

  因此,这个印刷结果是

  回到原始示例

  添加Settimeout函数后?

  最后会找到它。

  这是settimeout,因为它与那时相同

  因此与先前的概念结合在一起:然后输入微型任务队列

  领导概念settimeout回调将输入微型启用

  但是settimeout与承诺不同

  不同之处

  SetTimeout已同步,等待Settimeout不会阻止以下代码的执行。

  承诺本身是同步的,分辨率,拒绝是异步的,而等待承诺将阻止以下代码的执行。

  相同的一点

  这本身就是一个宏任务,回调是微型任务。

  由于Settimeout的顺序与承诺相同,因此有些人认为Settimeout是异步的,但事实并非如此。

  例子

  process.nexttick(fn)

  字面理解是

  执行主线程后,将立即执行内部方法。

  例子