vlambda博客
学习文章列表

event loop ,宏任务,微任务之我见

众所周知,javaScript是单线程的语言,Event Loop是javascript的执行机制


同步,异步


对于以上我的理解是:JavaScript是单线程的语言,可是在当存在大型图片加载,文件请求,定时器操作等情况下,可能会堵塞代码的运行,于是出现同步,异步的情况出现,在代码中,代码运行过程中,同步代码会放在执行栈中,当遇到异步的代码时,会将任务保存在一个队列中,当执行栈中空了之后,队列弹出一个任务到执行栈中运行,直到所有任务运行完毕。而异步任务存在微任务和宏任务,

微宏任务有那些?

 宿主环境提供的方法是宏任务,例如setTimeout, setInterval。这些都是浏览器或者Node环境实现的。js引擎自身提供的是微任务,例如Promise。基本上平时接触到的除了Promise都是宏任务。

 eventloop

eventloop也就是任务的执行方式。

执行方式是每次执行完宏任务 都去反复查看是否有微任务,如果没有微任务,便执行下一个宏任务,验证

比如

           

执行方式是每次执行完宏任务 都去反复查看是否有微任务,如果没有微任务,便执行下一个宏任务,这个下面的没有微任务,只有宏任务所以就执行了,下面的这个就不同了,下面依然是微任务所以就一直执行完微任务再执行宏任务


           

每日一推前端知识点,我们一块进步

更多精彩文章