从最简单的开始
当上述代码加一点修改时
说明:在编译上面的代码之后会变成吗?
会将.Then()回调函数投入到微型任务队列中吗?
然后,概念()回调函数将输入微型练习队列。
执行宏任务后,将执行概念微观任务
因此,这里将在最后打印。
将上述代码添加到关键字async,等待
那么此代码的微/宏任务将被解析为
可以发现执行顺序台。Log('2')在等待。
等待关键字的概念将阻止以下代码的执行。
在这里,添加上面的代码以添加关键字等待
说明:在上面段落中等待关键词的异步将变成?
因此与先前的概念结合在一起:然后输入微型任务队列
这就是这样
然后分析getDetail功能
然后结合先前的概念:等待关键字将阻止以下代码的执行
这就是这样
因此与先前的概念结合在一起:然后输入微型任务队列
那么,这句话是什么意思以及如何执行它呢?
可以理解为
将微任务本身作为宏任务
由微任务抛出的微任务用作微任务
然后结合先前的概念:执行宏任务后将执行微任务
形成一个周期
此过程称为事件循环。
可以直观地看到以下代码
更重要的是?
因此,这个印刷结果是
回到原始示例
添加Settimeout函数后?
最后会找到它。
这是settimeout,因为它与那时相同
因此与先前的概念结合在一起:然后输入微型任务队列
领导概念settimeout回调将输入微型启用
但是settimeout与承诺不同
不同之处
SetTimeout已同步,等待Settimeout不会阻止以下代码的执行。
承诺本身是同步的,分辨率,拒绝是异步的,而等待承诺将阻止以下代码的执行。
相同的一点
这本身就是一个宏任务,回调是微型任务。
由于Settimeout的顺序与承诺相同,因此有些人认为Settimeout是异步的,但事实并非如此。
例子
process.nexttick(fn)
字面理解是
执行主线程后,将立即执行内部方法。
例子