Javascript node.js setInterval不更改会话变量

Javascript node.js setInterval不更改会话变量,javascript,node.js,setinterval,Javascript,Node.js,Setinterval,我是javascript新手,一直在node.js中处理函数setInterval和会话 我有以下代码: var express = require('express'); var app = express(); var session = require('express-session')({ secret: 'shhh_very_secret', resave: true, saveUninitialized: true, cookie: {

我是javascript新手,一直在node.js中处理函数setInterval和会话

我有以下代码:

var express = require('express');
var app = express();
var session = require('express-session')({
    secret: 'shhh_very_secret',
    resave: true,
    saveUninitialized: true,
    cookie: {
        secure: false
    }
});

app.use(session);

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


    if (!req.session.visited) {
        console.log('First visit!');
        req.session.visited = true;
        req.session.state = 'default';

        setInterval(function() {
            req.session.state = "changed";
        }, 3000);

    } else {
        console.log('Page refreshed!');
        console.log('This should output "changed" but it does not');
        console.log(req.session.state);
    }
    res.send('Hi!');
});


app.listen(3000, function() {
    console.log('Example app listening on port 3000!');
});
有人能向我解释一下在我刷新页面后,req.session.state是默认状态吗?会话运行良好,否则我甚至无法打印出其他{}中的内容

  • 传递给
    get()
    的匿名函数将运行
  • 它触发了间隔
  • 您可以调用
    res.send()
    并发送响应
  • 3秒后,间隔完成,您可以更改状态
  • …此时请求已完成


    如果要修改会话中的数据,请在完成处理特定请求之前进行修改。

    但这就是目的。在res.send()之后更改数据。但当我在10秒后再次请求时,我应该会看到已经更改的数据。或如果我很愚蠢,我很抱歉,但我仍然不明白。@Matumizuro我认为一旦请求完成,会话状态会立即保持,因此您正在更改会话变量的内存中副本,没有人再感兴趣了。@Joachim Isaksson哦,我明白了。如何不依赖于用户的请求,每X秒更改一次会话数据?在会话中存储时间戳。根据这一点计算需求价值。@Quentin我不知道你刚才说了什么。为了理解这一点,我可以在谷歌上搜索什么?