Js异步之宏任务和微任务

什么是宏任务和微任务

宏任务

  • setTimeout、setInterval、Ajax、DOM事件

微任务

  • Promise、async/await

微任务执行时机比宏任务早

异步和单线程

js是一门单线程脚本语言,需要异步来辅助

异步和同步的区别:

  • 异步不会阻塞程序的执行
  • 同步会阻塞程序的执行

使用异步的场景:

  • 定时任务:setTimeout、setInterval
  • 网络请求:ajax请求、动态 < img> 加载
  • 事件绑定

ajax请求代码示例:

//ajax请求代码示例
console.log('start')
$.get('./data1.json',function(data1){
	console.log(data1)
})
console.log('end')

img加载示例:

console.log('start')
var img = document.createElement('img')
img.onload = function(){
    console.log('loaded');
}
img.src = '/xxx.png'

console.log('end')

事件绑定示例:


console.log('start')
document.getElementById('btn1').addEventListener('click',function(){
    alert('clicked')
})

console.log('end')
在请求处理过程中 会产生异步的请求 回头再处理 然后继续执行下面的请求

同步阻塞示例:

console.log(1000)
alert(200)
console.log(3000)
不点击alert确认窗口,不会打印3000

当我们打开网站的时候,网页的渲染过程就是同步任务,像页面骨架和页面元素的渲染,而加载图片、音乐之类的任务就是异步任务

js异步还有一个机制,就是遇到宏任务先执行宏任务,将宏任务放入任务队列,然后再执行微任务,将微任务放入微任务队列,但是往外拿的时候先从微任务队列里拿这个回调函数 然后再从宏任务的queue拿宏任务的回调函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值