1
app.get('/', function(req, res) {
    res.set('Content-Type', 'text/html');
    res.send('Yo');
    setTimeout(function(){
        res.send("Yo");
    },1000);
});

看起来“发送”结束了请求。我怎样才能让这个写Yo在屏幕上,然后 1 秒后(我猜有点像长轮询)写另一个Yo来获得YoYo?除了发送还有其他方法吗?

4

5 回答 5

2

用于res.write分段生成输出,然后使用 完成响应res.end

于 2012-09-17T16:06:52.140 回答
1

我认为您尝试做的事情是不可能的。发送响应后,客户端-服务器连接将关闭。

查看套接字(尤其是socket.io)以保持连接打开并在其上发送多条消息。

于 2012-09-17T16:06:21.127 回答
0

node.js 的问题在于它依赖于异步“样式”。因此,如果您引入类似“等待”功能的东西,您将失去异步执行方式的所有好处

我相信您可以通过以下方式实现与您想要的类似的东西:

  1. 异步方式)包括打印第二个“Yo”作为对第一个函数(或)的回调的函数
  2. 经典的等待(同步))在呈现第二个“哟”之前引入一个“大”循环。

例如:

for(i=0; i < 100000000; i++) {
    //do something
}
于 2013-01-11T16:07:02.360 回答
0

如果您想将结果作为单个块发送,请尝试

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);
});
于 2013-06-18T17:10:27.373 回答
0

尝试使用 JQuery+JSON。发送响应,然后使用 JQuery 和 JSON 更新您需要的内容。

这是 expressjs 的一个很好的教程,包括 DB 的东西(mongodb)。

于 2013-02-22T19:34:56.270 回答