javascript - node.js 事件循环是否像 ajax 调用?

标签 javascript ajax node.js

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

我熟悉 CPU 密集型任务,例如斐波那契数列的计算,但我的理解到此为止。

例如,我有一个 Rest API 可以执行所有计算或推荐,并且位于与运行 node 的机器不同的服务器上,那么 node.js 在处理 cpu 密集型任务时不会有任何问题。只需调用 api,然后告诉客户您的请求已被确认。

我无法摆脱这种将 node.js 与简单的 ajax 调用进行比较以将请求从表单发送到服务器、显示代码然后显示结果的想法。我猜 node.js 是一个 Web 服务器,执行大量“ajax”类型的调用并处理并发连接。

我的假设是否正确?

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

最佳答案

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

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

类比比萨店,如果只有一个人接受订单并将订单交给厨房,一旦准备好切割、包装并交给客户。只要有等待的地方,他就会继续执行下一个任务。这就是 node 所做的,那个人不会在厨房旁边停留,直到披萨煮熟。

在基于工作人员的方法中,想想银行出纳员,您会看到他们中有几个(可能是 5 个左右)他们接受各种请求,但他们不会在客户/请求之间切换。

关于javascript - node.js 事件循环是否像 ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31065236/

相关文章:

javascript - Zepto.js/CSS3 Webkit 转换在 .anim() 事件后变慢

jquery - 如何尽可能流畅地加载网页

javascript - Internet Explorer 10 忽略 XMLHttpRequest 'xhr.withCredentials = true'

javascript - 另一个ajax中的vue js ajax正在获取数据但不呈现 View

javascript - 将 async/await 与 forEach 循环结合使用

node.js - 找不到模块 'config-chain'

javascript - Ember 路由或 Controller 将数据模型公开为 json

javascript - 在不复制的情况下通过 WebSocket 发送 ArrayBuffer 的子段

javascript - 获取 Jquery 数据表中的总行数

javascript - Node.js - 如何检查请求数据?