app.get('/', function(req, res) {
res.set('Content-Type', 'text/html');
res.send('Yo');
setTimeout(function(){
res.send("Yo");
},1000);
});
看起来"发送"结束了请求。我怎样才能让它在屏幕上写Yo
,然后在 1 秒后(我猜有点像长轮询)写另一个Yo
来获得YoYo
?除了发送之外还有其他方法吗?
使用 res.write
分段生成输出,然后使用 res.end
完成响应。
我认为你想做的事情是不可能的。发送响应后,客户端-服务器连接将关闭。
查看套接字(尤其是 socket.io),以保持连接打开并在其上发送多条消息。
尝试使用 JQuery+JSON。 发送响应,然后使用 JQuery 和 JSON 更新您需要的内容。
这是一个很好的 expressjs 教程,包括 DB stuff (mongodb)。
如果要将结果作为单个块发送,请尝试
app.get('/', function(req, res) {
res.set('Content-Type', 'text/html');
res.write('Yo');
setTimeout(function(){
res.end("Yo");
},1000);
});
或类似的东西
app.get('/', function(req, res) {
res.set('Content-Type', 'text/html');
var str = 'yo';
setTimeout(function(){
res.end(str + 'yo');
},1000);
});
node.js的事情是它依赖于异步的"风格"。 因此,如果您引入类似"等待"函数的东西,您将失去异步执行方式的所有好处。
我相信你可以通过以下方式实现与你想要的类似的东西:
- (异步方式)包括一个函数,该函数将第二个"Yo"打印为回调第一个函数(或) (
- 经典等待(同步))在呈现第二个"Yo"之前引入一个"大"循环。
例如:
for(i=0; i < 100000000; i++) {
//do something
}