小雨问的一个js执行的问题,给的解释

187 阅读1分钟

他问:为什么是调用栈为空的时候啊?

去执行调用栈的任务是js引擎干的事情,从任务对列拿任务也是js引擎干的事情,那js引擎是单线程的,一时间只能干一件事,所以要么等调用栈执行完去拿任务,要么是先把所有的队列里的任务先拿到调用栈再统一执行,但是异步任务到任务队列是需要时间的,那js引擎等着它进入队列后再拿,就太浪费时间了,所以不如先把执行调用栈先执行完,再去看任务对列。