NodeJS是单线程的 - 在无限循环的情况下仍然没有阻塞

时间:2017-11-22 16:10:29

标签: javascript node.js multithreading

我很困惑NodeJS是如何非阻塞的,即使它是单线程平台。特别是,在这段代码中,我有两个回调,其中一个回调包含一个无限循环。它永远不会显示预期的输出,在我的例子中,'thread2',但它继续以指定的间隔执行下一个回调,在我看来,这违反了单线程应用程序的事实。任何澄清都将受到高度赞赏。

setInterval(() => console.log('thread1'), 1000);

setInterval(() => function() {
  console.log('thread2');
  while (true) {}
}, 500);

console.log('starting');

1 个答案:

答案 0 :(得分:4)

() => function() {
  console.log('thread2');
  while (true) {}
}

这是一个lambda表达式(() =>),它返回一个函数(之后的值)。你从来没有真正称这个功能。