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

时间:2017-08-16 03:42:22

标签: javascript node.js

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。

node results chrome results

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

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

0 个答案:

没有答案