【发布时间】: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