nodejs和expressjs

时间:2012-09-17 15:52:06

标签: node.js express

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

看起来像#34;发送"结束请求。如何让这个在屏幕上写Yo,然后在1秒之后(有点像我猜的长轮询)写另一个Yo得到YoYo?除了发送之外还有其他方法吗?

5 个答案:

答案 0 :(得分:2)

使用res.write分段生成输出,然后使用res.end完成回复。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

我相信你可以通过以下方式获得类似的东西:

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

    for(i=0; i < 100000000; i++) {
        //do something
    }
    

答案 3 :(得分:0)

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

这是一个很好的tutorial快递,包括DB的东西(mongodb)。

答案 4 :(得分: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);
});