Even Loop(事件循环机制)

1.什么是事件循环机制

Event Loop即事件循环,是解决javaScript单线程运行阻塞的一种机制。

2.为什么使用Even Loop

原因:JavaScript 是单线程的。单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。
    为了协调事件、用户交互、脚本、渲染、网络请求等,必须使用Event Loop。

3.Even Loop事件循环机制

执行js代码的时候,遇见同步任务,直接推入调用栈中执行遇到异步任务,将该任务挂起,等到异步任务有返回
之后推入到任务队列中,当调用栈中的所有同步任务全部执行完成,将任务队列中的任务按顺序一个一个的推入
并执行,重复执行这一系列的行为。 

异步任务又分为宏任务和微任务
4.宏任务

任务队列中的任务称为宏任务,每个宏任务中都包含了一个微任务队列。

宏任务包括

执行script标签内部代码、
setTimeout/setInterval、
ajax请
postMessageMessageChannel、
setImmediate,
I/O(Node.js) 

5. 微任务

等宏任务中的主要功能都完成后,渲染引擎不急着去执行下一个宏任务,而是执行当前宏任务中的微任务

微任务包括

Promise后的.then(),.catch()的内容、
MutonObserver、
Object.observe、
process.nextTick(Node.js)

例子

console.log('1');
setTimeout(function() {
    console.log('2');
    process.nextTick(function() {
        console.log('3');
    })
    new Promise(function(resolve) {
        console.log('4');
        resolve();
    }).then(function() {
        console.log('5')
    })
})
process.nextTick(function() {
    console.log('6');
})
new Promise(function(resolve) {
    console.log('7');
    resolve();
}).then(function() {
    console.log('8')
})

setTimeout(function() {
    console.log('9');
    process.nextTick(function() {
        console.log('10');
    })
    new Promise(function(resolve) {
        console.log('11');
        resolve();
    }).then(function() {
        console.log('12')
    })
})

结果

// 结果
1 - 7 - 6 - 8 - 2 - 4 - 3 - 5 - 9 - 11 - 10 - 12
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值