Что node js возвращает клиенту, когда он ждет ответа? - PullRequest
0 голосов
/ 16 января 2020

Я новичок в nodejs, но я знаю об асинхронной модели javascript в целом. Я родом из Грааля / сервлета. В сервлете, когда запрос отправляется на сервер, все происходит синхронно, он вычисляет результат и отправляет его обратно клиенту. Если результат занимает много времени, мы его продвигаем и сохраняем где-то для последующего извлечения, но ответ не удерживается, вместо этого выполняется другой запрос для получения результата. Однако в nodejs мое понимание до сих пор состоит в том, что он ожидает ответа, пока он не будет вычислен по некоторым асинхронным обратным вызовам. Теперь я предполагаю, что nodejs должен что-то возвращать клиенту, потому что javascript callstack не ждет возврата. Но НЕТ, правильный ответ отправляется клиенту. Теперь мой вопрос: как клиент ждет, пока он не получит ответ от обратных вызовов или каких-либо обещаний? Вот пример:

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);

Ответы [ 2 ]

1 голос
/ 16 января 2020

Теперь я предполагаю, что nodejs должен что-то возвращать клиенту, потому что javascript callstack не ожидает возврата.

Это не так.

Теперь мой вопрос: как клиент ждет, пока он не получит ответ от обратных вызовов или каких-либо обещаний?

Это просто ... ждет. Не нужно говорить, чтобы ждать. Он знает, что отправка сообщения по сети не приведет к мгновенному ответу.

Если пройдет слишком много времени, прежде чем он получит ответ, то произойдет таймаут и он сдастся.

0 голосов
/ 16 января 2020

Nodejs будет ждать ответа, а Node Js ничего не делает для ожидания ответа. Но если вы хотите установить любой пользовательский интерфейс предотвращения, вы можете использовать любую библиотеку для него.

Если клиент получает слишком много времени для ожидания, то nodejs сам вызывает любое исключение (если проблема будет возникать на стороне сервера) или тайм-аут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...