如何解释执行结果不同于节点和浏览器

setTimeout(function() { console.log('setTimeout1'); Promise.resolve().then(function() { console.log('promise1'); }).then(function() { console.log('promise2'); }) }, 0); setTimeout(function() { console.log('setTimeout2'); Promise.resolve().then(function() { console.log('promise3'); }).then(function() { console.log('promise4'); }) }, 0); 

nodejs(6.10.2LTS)中的执行和Chrome的结果就是这两张图片。 左是节点,另一个是Chrome。

节点结果铬的结果

当我执行多次时,节点上面会有两个不同的结果。 我已经知道,在浏览器运行时,我们可以通过WhatWG和Promises / A + Standard(任务队列机制)来解释事件循环。

即使通过阅读Node.js Event Loop,Timers和process.nextTick()等文档,我仍然无法解释这两个运行时间的不同结果。 最重要的是如何解释nodejs的结果。