美文网首页
同步任务队列、宏观任务队列、微观任务队列

同步任务队列、宏观任务队列、微观任务队列

作者: Marting424 | 来源:发表于2021-09-16 16:28 被阅读0次

1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务

2、执行顺序:同步任务——>微观任务——>宏观任务

3、宏观任务的方法有:script(整体代码)、setTimeout、setInterval、I/O、UI交互事件、postMessage、MessageChannel、setImmediate(Node.js 环境)

4、微观任务的方法有:Promise.then、MutaionObserver、process.nextTick(Node.js 环境),async/await实际上是promise+generator的语法糖,也就是promise,也就是微观任务

5、实例:

async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2');
}

console.log('script start');

setTimeout(function() {
console.log('setTimeout');
}, 0)

async1();

new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
});
console.log('script end');
解析:
(1)从上到下,先走同步任务队列,再走异步任务队列
(2)同步任务:script start → async1 start → async2 → promise1 → script end
(3)微观任务:async1 end → promise2
(4)宏观任务:setTimeout

相关文章

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • js运行机制

    在运行时会形成任务队列,分为同步任务队列和异步任务对列,同步队列优先加载异步任务队列会形成队列任务池,定时器不会一...

  • iOS 多线程之GCD

    GCD核心概念 任务 :执行的操作 队列 :执行任务的等待队列 任务 同步执行 :同步添加任务到指定的队列中,如果...

  • nextTick、setImmediate、promise.re

    执行队列(同步) 任务队列(异步事件) 每当异步任务完成后会在任务队列中添加一个关联事件,待执行队列任务执行完成...

  • GCD小总结

    单例模式 串行队列同步/异步执行任务 并发队列同步/异步执行任务 队列组 延时执行 barrier

  • GCD 死锁案例分析

    案例一:主队列,同步线程 任务1执行后,同步线程任务2加到主队列中,任务3会等待任务2执行完成后执行 对于队列,有...

  • iOSIN-GCD

    队列和同步异步 区别并行队列串行队列主队列同步(sync)没有开启新线程,串行执行任务没有开启新线程,串行执行任务...

  • 多线程

    iOS中的几种多线程GCD1、GCD分为任务和队列,任务(同步,异步)队列(串行,并发),同步串行,同步主队列的情...

  • GCD的学习笔记(One)

    并行和并发 GCD简介 GCD的任务 GCD的队列 GCD创建队列或获取队列的方法 任务的执行方式:同步执行(同步...

网友评论

      本文标题:同步任务队列、宏观任务队列、微观任务队列

      本文链接:https://www.haomeiwen.com/subject/qrskwltx.html