javascript的宏任务及微任务

直接上代码

console.log('1');
setTimeout(function() {
    console.log('2');
    new Promise(function(resolve) {
        console.log('3');
        resolve();
    }).then(function() {
        console.log('4')
    })
})
new Promise(function(resolve) {
    console.log('5');
    resolve();
}).then(function() {
    console.log('6')
})
​
setTimeout(function() {
    console.log('7');
    new Promise(function(resolve) {
        console.log('8');
    }).then(function() {
        console.log('9')
    })
})
console.log('10');
​
// 1 5 10 6 2 3 4 7 8
今天看了js的执行数序,在网上看到前端友人分享的,自己也学到了一些东西,特此记录一下,
我们知道js是单线程语言,为啥他不能是多线程,因为比如在多个线程同时操作dom,这个时候以谁为准,这个也是对js为啥不是多线程的一个反列。
js是单线程,但是在单线程中,我们是知道一个接一个去执行,当前一个任务执行完之后才能执行下一个任务,所以我们将任务分为同步任务和异步任务。
只有在同步任务执行完之后再去看任务队列中去执行异步的任务。
异步任务又细分宏任务和微任务
宏任务常见的有setTimeout和setInterval,微任务常见的有promise.then.catch,process.nextTick等。
在同级下只有执行完宏任务然后在执行微任务。
如果宏任务里还有微任就继续执行宏任务里的微任务,如果宏任务中的微任务中还有宏任务就在依次进行。
主线程任务——>微任务——>宏任务——>宏任务里的微任务——>宏任务里的微任务中的宏任务——>知道任务全部完成。在宏任务和微任务之间来回循环就叫做事件循环也叫做事件轮询。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值