Я новичок в 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);