Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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
Node.js 什么';异步和多线程之间的内在区别是什么? 我曾经把异步看作是多线程的等价物。多个任务将并行完成。然而,我用javascript写了这篇文章,似乎dosomething永远不会发生 setTimeout(1000, dosomething) while(true){}_Node.js_Asynchronous - Fatal编程技术网

Node.js 什么';异步和多线程之间的内在区别是什么? 我曾经把异步看作是多线程的等价物。多个任务将并行完成。然而,我用javascript写了这篇文章,似乎dosomething永远不会发生 setTimeout(1000, dosomething) while(true){}

Node.js 什么';异步和多线程之间的内在区别是什么? 我曾经把异步看作是多线程的等价物。多个任务将并行完成。然而,我用javascript写了这篇文章,似乎dosomething永远不会发生 setTimeout(1000, dosomething) while(true){},node.js,asynchronous,Node.js,Asynchronous,为什么?Node.js是一种异步语言。如中所述 Javascript是单线程的(web工作者除外,但这与本例无关,因此我们将忽略它)。这意味着setTimeout实际上是安排一些代码在未来某个时间执行,至少在一段时间后执行,但只有当浏览器停止了它当时在呈现线程上执行的任何其他操作时(可能是呈现html或执行javascript) 在您的示例中,while循环的执行从未停止,控制从未返回到顶层,因此计划的setTimeout函数从未执行。多线程是实现异步编程的多种方法之一。对事件作出反应并向调度器

为什么?

Node.js是一种异步语言。如中所述

Javascript是单线程的(web工作者除外,但这与本例无关,因此我们将忽略它)。这意味着setTimeout实际上是安排一些代码在未来某个时间执行,至少在一段时间后执行,但只有当浏览器停止了它当时在呈现线程上执行的任何其他操作时(可能是呈现html或执行javascript)


在您的示例中,while循环的执行从未停止,控制从未返回到顶层,因此计划的
setTimeout
函数从未执行。

多线程是实现异步编程的多种方法之一。对事件作出反应并向调度器屈服是另一种方式,而且恰好是javascript的实现方式

在您的示例中,必须允许为您提供控制并允许您调用
setTimeout
的事件完成,以便javascript引擎可以监视超时并在超时过期时调用您的
doSomething
回调。

可能重复的