首先,我们必须明确一个概念:

<mark>JS是单线程的</mark>

其次,

<mark>JS是有异步的</mark>

js的异步分 微任务宏任务

<mark>主线任务执行完,js会到微任务列表找任务,找不到了再到宏任务里面找</mark>

其中,Promise 的任务是 微任务


# 定时器的误区

延时时间不放在 宏任务里面,
也就是
如果定延时时间1s
而且主线程和微任务执行时间大于1s
轮到定时器时候,定时器的回调方***立即执行

# 证明 js 是单线程

除了看 标准原文
下面代码也直观看出来
(无论执行多少次,结果肯定不变【不可能出现1、1的情况】)