Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS是单线程的-在无限循环的情况下仍然不会阻塞_Javascript_Node.js_Multithreading - Fatal编程技术网

Javascript NodeJS是单线程的-在无限循环的情况下仍然不会阻塞

Javascript NodeJS是单线程的-在无限循环的情况下仍然不会阻塞,javascript,node.js,multithreading,Javascript,Node.js,Multithreading,我对NodeJS是如何非阻塞的感到困惑,即使它是单线程平台。特别是,在这段代码中,我有两个回调,其中一个包含无限循环。它从不显示预期的输出,在我的例子中是“thread2”,但它会以指定的间隔继续执行下一个回调,在我看来,这与单线程应用程序的事实不符。如有任何澄清,将不胜感激 setInterval(()=>console.log('thread1'),1000); setInterval(()=>函数(){ console.log('thread2'); while(true){} }, 5

我对NodeJS是如何非阻塞的感到困惑,即使它是单线程平台。特别是,在这段代码中,我有两个回调,其中一个包含无限循环。它从不显示预期的输出,在我的例子中是“thread2”,但它会以指定的间隔继续执行下一个回调,在我看来,这与单线程应用程序的事实不符。如有任何澄清,将不胜感激

setInterval(()=>console.log('thread1'),1000);
setInterval(()=>函数(){
console.log('thread2');
while(true){}
}, 500);
console.log('starting')
这是一个lambda表达式(
()=>
),它返回一个函数(后面的值)。你从来没有真正调用过这个函数


这是一个lambda表达式(
()=>
),它返回一个函数(后面的值)。你从来没有真正调用过这个函数。

我花了一分钟才弄明白为什么会这样。如果您给出一个没有任何箭头函数的示例,可能会更清楚。明白了!这是一个简单的错误。它现在的工作情况和预期的一样。谢天谢地,我花了一分钟才弄明白为什么会这样。如果您给出一个没有任何箭头函数的示例,可能会更清楚。明白了!这是一个简单的错误。它现在的工作情况和预期的一样。感谢如果希望函数体被
setInterval()
调用,请从上述代码中删除
“function()”
字符。然后,它将进入无限循环,而不会有任何进展。您并没有像现在这样调用无限循环。实际上,您有一个由
setInterval()
调用的arrow函数,但它所做的只是返回另一个从未调用过的函数。这看起来像是一个箭头函数输入错误,碰巧没有产生语法错误。一旦开始在内部函数中执行代码,您将看到预期的无限循环。如果希望函数体由
setInterval()调用,请从上述代码中删除
“function()”
字符。然后,它将进入无限循环,而不会有任何进展。您并没有像现在这样调用无限循环。实际上,您有一个由
setInterval()
调用的arrow函数,但它所做的只是返回另一个从未调用过的函数。这看起来像是一个箭头函数输入错误,碰巧没有产生语法错误。一旦开始在内部函数中执行代码,就会看到预期的无限循环。
() => function() {
  console.log('thread2');
  while (true) {}
}