JS是异步单线程语言
如果只有同步模式,遇到耗时操作,页面便会阻塞,比如接口请求不到数据,代码就不会继续执行,直到接口请求成功。这样显然不现实也不实用。所以异步模式应运而生。
事件运行示意图
事件执行规则
一:先同步后异步
注意:异步先放入线程中,不会马上放入到任务队列中
下面看一道题:
解答:24573186 先执行同步任务所以是2457,接下来执行异步任务,但这里要注意中间有个for循环花费了33ms事件所以可以得到
10ms时放入异步任务3
20ms时放入异步任务1
43ms时放入异步任务8
10ms时放入异步任务6
二: 先微任务后宏任务
注意:异步任务分为微任务和宏任务
异步任务 | 具体包含 |
---|---|
宏任务 | setTimeout,setInterval,setImmediate,ajax请求,requestAnimationFrame |
微任务 | process.nextTick,promise,Async/Await |
下面是字节跳动的一道面试题
答案是DACFHBGE
注意:详细解释请参考哔哩哔哩超详解