【问题标题】:What node js returns to the client when it waits for the response?什么节点js在等待响应时返回给客户端?
【发布时间】:2020-01-16 20:11:27
【问题描述】:

我是 nodejs 的新手,但我一般都知道 javascript 的异步模型。我来自 grails/servlet 背景。在 servlet 中,当请求发送到服务器时,一切都是同步的,它计算结果并将其发送回客户端。如果结果需要很长时间,那么我们将其线程化并将其存储在某个地方以便稍后检索它,但响应不会保留,而是执行另一个请求以获取结果。 然而,在 nodejs 中,到目前为止我的理解是它会等待响应,直到它从一些异步回调中计算出来。 现在我的假设是,nodejs 必须向客户端返回一些东西,因为 javascript 调用堆栈不等待返回。但是不,正确的响应被发送到客户端。 现在我的问题是客户端如何等待,直到它从回调或一些承诺中得到响应? 这是一个例子:

var express = require('express');
var {mongoose} = require('./db/mongoose');
var {User} = require('./models/user');

var app = express();
app.get('/users',(req,res)=>{
   User.find().then((result)=>{ // here response is calculated inside then
                                // which is retrieved later at this point how nodejs waits for 
                                //   this result
      res.send(result)
   },(e)=>{

     });
}); 

app.listen(3000);

【问题讨论】:

    标签: javascript node.js asynchronous


    【解决方案1】:

    现在我的假设是,nodejs 必须向客户端返回一些东西,因为 javascript 调用堆栈不等待返回。

    没有。

    现在我的问题是客户端如何等待,直到它从回调或一些承诺中得到响应?

    它只是……等待。不需要告诉它等待。它知道通过网络发送消息不会得到即时响应。

    如果在得到响应之前经过了太多时间,那么它将超时并放弃。

    【讨论】:

    • 嗯..所以在请求后获得响应必须来自http协议,这就是为什么客户端等待响应,直到nodejs服务器发送一些响应,对吧? @昆汀
    【解决方案2】:

    Nodejs 将等待响应,Node Js 不会做任何事情来等待响应。但是,如果您想设置任何用户阻止界面,那么您可以使用任何库。

    如果客户端等待时间过长,则 nodejs 本身会抛出任何异常(如果服务器端会发生问题)或超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 2020-11-06
      • 2017-01-19
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多