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