11

我是 Node 和 Express 的新手,我试图用 Express 做一些事情只是为了开始,然后我遇到了这个问题。

第一个res.send()效果很好,但第二个没有触发。

这是我的代码:

var express = require('express'),
    app     = express(),
    fs      = require('fs'),
    visits;


app.listen(8080);

app.get('/', function(req,res) {

    res.send('Hello');

    fs.readFile('counter.txt','utf-8', function(e,d) {

        if (e) { 
            console.log(e);
        }
        else {
            console.log(parseInt(d) + 1);
            fs.writeFile('counter.txt',parseInt(d) + 1);
            res.send('<p id="c">' + ( parseInt(d) + 1 ) + '</p>');
        }

    })
...

'Hello' 已发送,但未发送res.send('<p> .. </p>');。如果我发表评论res.send('Hello');,将显示访问者。

提前致谢。

4

2 回答 2

12

res.send()意味着只被调用一次。

试试这个:

app.get('/', function(req,res) {
  var response = 'Hello';
  fs.readFile('counter.txt','utf-8', function(e,d) {
      if (e) {
        console.log(e);
        res.send(500, 'Something went wrong');
      }
      else {
        console.log(parseInt(d) + 1);
        fs.writeFile('counter.txt',parseInt(d) + 1);
        response += '<p id="c">' + ( parseInt(d) + 1 ) + '</p>';
        res.send(response);
      }
  })
});

(或者只是res.send("Hello<p id=..."),但你明白了:)

于 2013-03-06T14:35:02.017 回答
3

这是因为 res.send() 完成发送响应。

res.send('Hello');遇到它时,它会立即发送响应。所以 nextres.send没有执行,你看不到访问者。评论第一个res.send允许您查看第二个。

于 2013-03-06T14:35:23.837 回答