是node.js事件循环像一个Ajax调用?

我很困惑node.js比其他技术的优势。 我一直在阅读这篇文章: http : //www.toptal.com/nodejs/why-the-hell-would-i-use-node-js和这个如何决定何时使用Node.js? 让自己熟悉它,让我感到困惑。

我熟悉cpu密集型任务,如斐波那契数列的计算,但这是我理解的结束。

例如,我有一个Rest API,它执行所有的计算或build议,并且安装在与机器运行节点不同的服务器上,那么node.js就不会有任何处理cpu密集型任务的麻烦。 只要调用API,然后告诉客户端,您的请求被确认。

我不能动摇这个想法,比较node.js和一个简单的ajax调用从窗体发送请求到服务器,显示一个ticker然后显示结果。 我猜Node.js是一个Web服务器,做很多的“Ajax”types的调用和处理并发连接。

我的假设是否正确?

假设从数据库中检索数据是一个io操作,但是从这个cpu密集型数据创build一个复杂的报告,是否也是正确的?

你是正确的处理许多Ajax请求,但是在基于工人的模型也是如此(php / python工作线程)

基于事件的系统主要区别在于只有一个工作人员在做各种计算部分代码(如过滤数据,添加处理等)。 当它调用类似于从文件读取的io操作时,或者db等,node不能控制这个操作,而不是等待这个操作完成,而是将一个callback放回到队列中,继续下一个队列处理(如果有的话) 。

比方想想比萨饼店,如果只有一个人正在点菜,把菜单交给厨房,一旦准备好了,就打包送给顾客。 在哪里等待,他只是继续下一个任务。 这是节点所做的,那个人不会在厨房旁边挂上,直到比萨饼熟了。

在基于工人的方法的情况下,想一下银行出纳员,你看到他们夫妇(可能是5左右),他们采取各种请求,但他们不切换客户/请求之间。

请参阅这些资源以深入了解JavaScript事件循环的工作方式。

https://www.youtube.com/watch?v=8aGhZQkoFbQ

http://latentflip.com/loupe/

我不能回答你所有的疑惑,但希望你对AJAX有一些清晰的认识。 AJAX – asynchronousJavaScript + XML是向服务器发出请求的技术。 Nodejs服务器知道如何处理这样的请求,但说这是唯一可以做的是绝对错误的 。 Nodejs是单线程的,因此是asynchronous的。 无论是对于CPU密集型任务来说都是好的,我想说的是,除非你想用multithreading的方式来解决问题,否则就不行。