【问题标题】:nodejs and expressjsnodejs 和 expressjs
【发布时间】:2012-09-09 21:10:04
【问题描述】:
app.get('/', function(req, res) {
    res.set('Content-Type', 'text/html');
    res.send('Yo');
    setTimeout(function(){
        res.send("Yo");
    },1000);
});

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

【问题讨论】:

    标签: node.js express


    【解决方案1】:

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

    【讨论】:

    • 这仍然会一次性发送整个响应,我认为@K2xL 试图做的是在结果可用时单独发送消息,因此套接字将是这里的方式。跨度>
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        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);
        });
        

        【讨论】:

          【解决方案5】:

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

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

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

          例如:

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

          【讨论】:

            猜你喜欢
            • 2015-07-17
            • 1970-01-01
            • 1970-01-01
            • 2016-07-22
            • 2017-11-21
            • 1970-01-01
            • 1970-01-01
            • 2016-06-26
            • 2020-05-29
            相关资源
            最近更新 更多