gpt4 book ai didi

javascript - Node.js 中对路由的两次调用是否彼此独立? (在事件循环和异步数据库访问的上下文中)

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:01 24 4
gpt4 key购买 nike

变量作用域的规则与node.js中常规的“线性”javascript相同吗?

我正在使用某个请求中的数据进行几次数据库调用,以下内容将位于 app.get 或 app.post 函数调用中:

var data = req.body.data;
----> db SELECT * FROM some table WHERE some value = data;
-----> db callback declares var resultdata = result.data
----> db SELECT something using BOTH data and resultdata

我了解 Node.js 事件循环的本质,在我的情况下,这些数据库调用是异步的,但如果在第一个回调和数据库请求完成之前另一个请求在同一路径上进来怎么办?每个请求的变量是否保留/唯一?对上述路由的两次调用是否彼此独立?

最佳答案

是的,由于 Node.js 的事件驱动特性,这两个调用是相互独立的。所有 I/O 都是事件驱动且异步的。

但是,Node.js 是单线程,这意味着您无法执行任何并行代码执行。例如,很容易阻塞 Node.js 服务器的长时间运行循环,即:在请求-响应周期的中间解析 JSON 文件。

Since Node.js runs on a single thread, everything that will block the event loop will block everything. That means that if you have a web server with a thousand connected clients and you happen to block the event loop, every client will just...wait.

来源:https://www.airpair.com/node.js/posts/top-10-mistakes-node-developers-make

关于javascript - Node.js 中对路由的两次调用是否彼此独立? (在事件循环和异步数据库访问的上下文中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com