C语言 高阶函数 整数转换 OpenCV4 iphone layout angular material ip vue动态绑定class vue循环数组 nginx视频教程 java并发编程视频 android项目实战 数据库设计规范 abaqus是什么软件 java遍历json数组 idea整理代码格式 清空input文本框的值 mac版的matlab好用吗 python3删除文件 windows搭建python开发环境 java编程实例 安装java环境 java中tostring java时间戳转时间 java学习平台 java中random linuxsleep python网站开发实例 脚本下载 只狼鬼佛 selinux关闭 显示器面板类型 碧桂园园宝 视频编辑专家下载 华为手机刷公交卡 pr调整图层 c4d挤压 ftp客户端软件 浣海之核
当前位置: 首页 > 学习教程  > 编程语言

js宏任务和微任务

2021/2/13 17:11:04 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

是什么 宏任务和微任务是异步里api的分类; 1.微任务是es提供的api,常用的有: promise实例.then().catch() & 异步函数中await 行后面的代码 ; 2.宏任务是浏览器提供的api ,常用的有 :定时器 & ajax & dom事件; 宏任务和微任务的区别: 宏任务:dom渲染后触发 微…

是什么

宏任务和微任务是异步里api的分类;

1.微任务是es提供的api,常用的有: promise实例.then().catch() & 异步函数中await 行后面的代码 ;

2.宏任务是浏览器提供的api ,常用的有 :定时器 & ajax & dom事件;

宏任务和微任务的区别:

宏任务:dom渲染后触发
微任务:dom渲染前触发

js代码的执行顺序

js是单线程的,而且和dom渲染共用一个线程

第1轮宏任务(all同步代码,包括异步函数与promise)
->第1轮微任务(await行后的代码与promise的then catch)
->dom渲染
->新一轮宏任务(如: 定时器 ,dom事件,ajax)

实例

async function fn1 () {
	//!!!await 行及前面的代码都是同步
	console.log('async1 start')
	await fn2()
	//!!!await行后的代码:异步,微任务
	console.log('async1 end')
}
async function fn2 () {
	console.log('async2 ')
}
console.log('第1轮宏任务 start,执行all同步代码')
fn1()
setTimeout(() => console.log('第2轮宏任务'))
new Promise((res, rej) => {
	console.log('promise start')
	res("promise then")
}).then(e => console.log(e))

console.log('第1轮宏任务 end,执行第1轮微任务')

第1轮宏任务 start,执行all同步代码
async1 start
async2
promise start
第1轮宏任务 end,执行第1轮微任务
async1 end
promise then
第2轮宏任务


本文链接: http://www.dtmao.cc/news_show_700083.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?