同步 异步
JS是单线程,同步只能将任务按照顺序执行,也就是说只有上一个任务执行完后才能执行下一个,这种方式会阻塞其他任务。异步可以解决这个问题。
同步任务:所有同步任务都在主线程执行,形成一个执行栈。
异步任务:不进入主线程,而进入任务队列,只有任务队列通知主线程,当前异步任务完成了,才会进入执行栈中执行。
异步:同一时间可以做多个事情,执行效率高,但是会占用更多资源,不利于我们对进程进行控制。
理解js单线程和异步,这一篇就够了https://blog.csdn.net/gitchatxiaomi/article/details/108054585
图源:https://blog.csdn.net/qq_21033663/article/details/51564786
宏任务 微任务
异步任务的执行有优先级的顺序,包括了宏任务和微任务。
同步 -> 异步(微任务) -> 异步(宏任务)
每次执行完所有的同步任务后,会在任务队列中取出异步任务,先将所有微任务执行完成后,才会执行宏任务。所以可以得出结论,微任务会在宏任务之前执行。
参考:https://blog.csdn.net/weixin_521