nodejs and expressjs


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的事情是它依赖于异步的"风格"。 因此,如果您引入类似"等待"函数的东西,您将失去异步执行方式的所有好处

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

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

例如:

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

最新更新