【问题标题】:Nodejs - Multiple Requests to End Point with Asynchronous ProcessNodejs - 对具有异步进程的端点的多个请求
【发布时间】:2018-04-08 22:51:51
【问题描述】:

我对 Nodejs 开发相当陌生。

我很好奇在涉及异步过程的端点 URL 附近有多个请求。

ie

app.post("/endpoint", function(req, res) {

  var input = req.body.data

 .... 

asynchronous code here

})

所以用户A点击了请求。输入获取数据。用户 A 正在等待异步进程,因此 Node 在此端点接受下一个请求。 var 现在被覆盖了。?

所以我假设 Node 不会这样做并首先满足用户 A 的请求...在端点上一次不超过一个请求。

这是由服务器响应决定的吗?所有请求都必须有响应?

任何信息都会很棒?

【问题讨论】:

    标签: node.js api http express


    【解决方案1】:

    如果输入变量超出了 post 函数的范围,那么它将被覆盖。示例:

    var input
    app.post("/endpoint", function(req, res) {
    
      input = req.body.data
    
       //.... 
    
       //asynchronous code here
    
    })
    

    但由于它在范围内,因此它对那个请求是唯一的。它唯一的一个请求的缺点是它不能在请求之外访问,除非你将它保存在其他地方,并且一旦请求中的所有代码(包括异步代码)完成处理,它也会被删除。

    【讨论】:

    • 那么如果用户A在端点请求中,这个端点在用户A收到响应之前不会处理另一个请求?
    • @SteveW。不,只要是异步的,就可以一次处理多个请求。如果您的代码是同步的,那么一次只能处理一个。 Node 是单线程的,但是当您异步执行某些操作时,它允许其他任务(例如其他请求)在等待异步任务完成时执行某些操作。每个请求都会触发对处理程序的单独调用,因此它具有自己的参数范围和在该函数中声明的变量。
    • 所以据我了解,用户 A 和用户 B 几乎同时访问相同的端点/URL,节点将用户 A 及其局部变量传递给线程,然后将用户 B 及其局部变量传递给线程以被处理。即使事件循环是单线程的并发请求也是多线程处理的?
    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    相关资源
    最近更新 更多