js宏任务都有哪些(JavaScript 操作宏任务与微任务)
类别:编程学习 浏览量:1287
时间:2021-10-21 08:21:04 js宏任务都有哪些
JavaScript 操作宏任务与微任务宏任务与微任务- javaScript是单线程语言(如果多线程dom会疯掉)
- 所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务
- 同时还有两个任务列表用于存放异步任务,宏任务、微任务
- 执行顺序为:主线程=>微任务=>宏任务
- 定时器模块,到达时间点将其放入宏任务队列
- 如果主线程没有任务则执行,如果有则等待执行完成后再继续执行
- 如果有两个相同时间的定时器则上面的先执行下面的后执行
- 如果两个时间不同的定时器则时间短的先执行时间长的后执行
注意点:
- 定时器的⏲是在定时器模块中完成的,完成后就和普通异步任务一样了,
- 时间方面由于主线程实践过长的原因,有可能会延后
- promise的构造函数为同步任务
- 执行顺序永远为:同步=>微任务=>宏任务
- 在嵌套代码中可能出现宏任务中有同步、宏任务、微任务,这时将他们放到下一次执行中的队列/主线程等待执行
setTimeout(() => { console.log("定时器"); setTimeout(() => { console.log("timeout timeout"); }, 0); new Promise(resolve => { console.log("settimeout Promise"); resolve(); }).then(() => { console.log("settimeout then"); }); }, 0); new Promise(resolve => { console.log("Promise"); resolve(); }).then(() => { console.log("then"); }); console.log("ssss");
执行顺序:Promise=>ssss=>then=>定时器=>settimeout Promise=>settimeout then=>timeout timeout
DOM渲染任务浏览器渲染:CSS+DOM执行遇到js优先执行js
可以把js尽量放在下面:避免白屏
任务不会同时执行,会一个一个的被调度,他们共享内存
Promise微任务处理复杂业务使用promise可以将任务变成异步任务使其不影响同步任务的执行
到此这篇关于JavaScript 操作宏任务与微任务的文章就介绍到这了,更多相关JavaScript宏任务与微任务内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- JavaScript instanceof 的用法
- js实现继承的五种(JavaScript继承的三种方法实例)
- JavaScript css3实现简单视频弹幕功能(JavaScript css3实现简单视频弹幕功能)
- javascript四种数组(javascript数组includes、reduce的基本使用)
- javascript类型转换讲解(JavaScript数据类型转换详解推荐)
- 用css实现图片特效代码(HTML+CSS+JavaScript实现图片3D展览的示例代码)
- javascript弹出菜单(Javascript实现简易导航栏)
- javascript如何判断类型(JavaScript如何优化逻辑判断代码详解)
- 用js编写tab栏切换(JavaScript实现简易tab栏切换内容栏)
- js淘宝购物车效果代码(JavaScript实现电商平台商品细节图)
- redux实例教程(详解JavaScript状态容器Redux)
- javascript五大继承方式(原生Javascript实现继承方式及其优缺点详解)
- javascript中error错误类型
- dedecms新手建站教程网页设计(DEDECMS幻灯片中JavaScript实际应用举例)
- javascript中window对象
- qt和js相互调用(QT与javascript交互数据的实现)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
热门推荐
- sqlserver2012tcpip配置(Sql Server2012 使用IP地址登录服务器的配置图文教程)
- phplaravel快速开发平台(laravel框架实现去掉URL中index.php的方法)
- xp系统如何设置ftp服务器(打开windowXP的21端口即用winxp架设ftp服务器)
- mysql 5.5.27 winx64安装配置方法图文教程(mysql 5.5.27 winx64安装配置方法图文教程)
- dedecms怎样开启wap(dedecms织梦登录后台菜单栏无法显示解决方法)
- sqlserver创建带参数的存储过程(SQLServer存储过程实现单条件分页)
- python3配置教程(python3中property使用方法详解)
- linux目录操作功能(Linux 目录结构详细介绍)
- laravel队列是如何触发的(laravel 事件/监听器实例代码)
- idea连接不上docker(IDEA使用Docker插件远程部署项目到云服务器的方法步骤)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9