js宏任务微任务

63 阅读1分钟

什么是宏任务和微任务

宏任务:setTimeout setInterval Ajax DOM事件

微任务:Promise async/await

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

异步和单线程

异步和单线程是相辅相成的,js是一门单线程脚本语言,所以需要异步来辅助

异步和同步的区别

异步不会阻塞代码的执行,同步会阻塞代码的执行

使用异步的场景

1、定时任务:setTimeout,setInterval

2、网络请求:ajax请求,动态图片加载

3、事件绑定(请求处理过程中,会跳过异步的请求回头再处理,先执行下面的请求)

执行顺序

1、主线程上宏任务微任务执行顺序

执行顺序:主线程>主线程上创建的微任务>主线程上创建的宏任务

2、宏任务中包含微任务

执行顺序:主线程>主线程上的宏任务队列>宏任务队列中创建的微任务

总结

js中的一个机制就是遇见宏任务先执行宏任务,将宏任务放入eventquene,然后再执行微任务

因为js是单线程语言,只能同时做一件事。js任务需要排队顺序执行,如果一个任务时间过长,后边的任务也会等着。

异步就是由单线程这个背景来的,解决了单线程等待的这个问题,异步的特点不会阻塞后面代码的执行。也就是请求处理过程中会产生异步的请求,回头再处理,然后继续执行下面的请求。