node.js事件是否像ajax调用一样循环?

时间:2015-06-26 04:57:39

标签: javascript ajax node.js

我对node.js优于其他技术的优势感到困惑。我一直在阅读这篇文章:http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-jsHow to decide when to use Node.js?来熟悉它并让我感到困惑。

我熟悉cpu密集型任务,比如Fibonacci系列的计算,但这就是我的理解结束的地方。

例如,我有一个Rest API,可以完成所有的计算或推荐,并且安装在与机器运行节点不同的服务器上,然后node.js在处理cpu密集型任务时不会遇到任何麻烦。只需调用api然后告诉客户您的请求已得到确认。

我无法想象将node.js与简单的ajax调用进行比较以将请求从表单发送到服务器,显示一个自动收报机然后显示结果。我猜测node.js是一个Web服务器,做了很多“ajax”类型的调用和处理并发连接。

我的假设是否正确?

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

2 个答案:

答案 0 :(得分:2)

你正确处理许多ajax请求,但是在基于worker的模型中也是如此(php / python worker threads)

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

比喻披萨店,如果只有一个人接受订单并将订单交给厨房,一旦准备好切割,包装并交给顾客。在哪里等待,他只是继续下一个任务。这就是节点的作用,那个人不会挂在厨房旁边,直到披萨煮熟为止。

如果以工人为基础的方法想到银行出纳员并且您看到他们中的一对(可能是5个左右),他们会接受各种请求,但他们不会在客户/请求之间切换。

答案 1 :(得分:1)

请参阅这些资源,以便更深入地了解JavaScript事件循环的工作原理。

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

http://latentflip.com/loupe/