JS是单线程执行的,页面加载时,会自上而下执行主线程上的同步任务,当主线程代码执行完毕时,才开始执行在任务队列中的异步任务。
具体如下
1.所有同步任务都在主线程上执行,形成⼀个执行栈。
2.主线程之外,还存在⼀个"任务队列(eventloop队列或者消息队列)"。只要异步任务有了运行结果,就在"任务队列"之中放置⼀个事件。
3.⼀旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。哪些对应的异步任务,于是结束等待状态,进⼊执行栈,开始执行。
4.主线程不断重复上面的第三步。
图示:

示意图