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