【问题标题】:In the case of node js the event queue or task queue is only meant for queuing tasks?在节点 js 的情况下,事件队列或任务队列仅用于排队任务?
【发布时间】:2018-03-14 02:48:31
【问题描述】:

在 nodeJs 的情况下,事件队列或任务队列仅用于排队任务,如果存在任何类型的异步调用,是否由 libuv 库中的 c++ api 处理。

例如,如果任何数据库查询正在发生,流程究竟如何流动?

【问题讨论】:

    标签: node.js asynchronous event-loop libuv eventqueue


    【解决方案1】:

    您在 Node.JS 中使用的库向数据库发出请求,并释放队列。虽然数据库不响应您,但其他进程可以到达并完美处理。因此,当数据库响应您时,它将作为您的回调。 至少如果你一直在以正确的方式使用 Node.JS,那就是滥用回调。

    这称为事件循环;

    【讨论】:

    • 这个密集操作到底是什么,我猜事件循环不是我正在谈论的单线程
    • 这些是不再属于节点的外部事物。示例:当您将任务传递给数据库时,不再由节点负责。它一直在等待数据库给你一个答案。在中间,节点将执行其他任务,而数据库处理。这不是阻塞的,不像 PHP 等其他语言会在执行其他操作之前等待数据库响应。
    最近更新 更多