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)以保持连接打开并在其上发送多条消息。
node.js 的问题在于它依赖于异步“样式”。因此,如果您引入类似“等待”功能的东西,您将失去异步执行方式的所有好处。
我相信您可以通过以下方式实现与您想要的类似的东西:
例如:
for(i=0; i < 100000000; i++) {
//do something
}
如果您想将结果作为单个块发送,请尝试
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);
});
尝试使用 JQuery+JSON。发送响应,然后使用 JQuery 和 JSON 更新您需要的内容。
这是 expressjs 的一个很好的教程,包括 DB 的东西(mongodb)。