栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

事件循环(Event Loop)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

事件循环(Event Loop)

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 系列文章目录
  • 前言
  • 一、同步任务
  • 二、异步任务
    • 1.宏任务与微任务
    • 2.案例
  • 总结


前言

正因为JS是单线程的,所以如果出现多个任务,这些任务的执行顺序是怎么样的呢?这就不得不提一下事件循环

一、同步任务

js中的同步任务是按顺序从上往下依次执行的

   

 这里的1234是依次执行

二、异步任务 当异步任务出现的时候,会先将异步任务存放在任务队列中,当执行完所有的同步任务之后,再去调用任务队列中的异步任务

 js会先将同步任务1提至主线程,然后发现异步任务1和2,则将异步任务1和2依次放入任务队列

同步任务执行完以后会去任务对列看看有没有异步任务 然后执行异步

先执行同步任务1->  再执行同步任务2 ->异步任务

2.微任务与宏任务

异步任务又可以详细的分为两类 就是微任务与宏任务 

I/O、定时器、事件绑定、ajax等都是宏任务

Promise的then、catch、finally和process的nextTick都是微任务

宏任务与微任务的执行顺序是  宏任务执行一个后先看看任务对列有没有微任务 如果有就把微任务执行完再去执行下一个宏任务


 举个栗子

console.log(1) // 同步任务
setTimeout(function() {
  console.log(2) // 异步任务:宏任务
}, 0)
new Promise(function(resolve) {
  console.log(3) // 同步任务
  resolve()
}).then(function() {
  console.log(4) // 异步任务:微任务
})
console.log(5) // 同步任务

答案:1、3、5、4、2
总结

同步任务-->微任务--->宏任务--->微任务

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号