在js中的asynchronous操作顺序

最初我对代码中的数字顺序有疑问

(function() { setTimeout(() => console.log(1), 0); Promise.resolve(true).then(() => console.log(2)); })(); 

对于我自己,我已经解释过,像setTimeout事实上使用4ms而不是0。

但是代码和setImmediate

 (function() { setImmediate(() => console.log(1), 0); Promise.resolve(true).then(() => console.log(2)); })(); 

问这个问题的人说,原因是在v8 Promise中不是webapis的一部分,并且在循环内运行。

也许还有其他解释吗? 还是链接来find更多的细节?

如果我使用放大镜进行可视化,我看到了相同的情况

放大镜可视化 – 我正在寻找解释