我是javascript的新手,并且一直在使用函数setInterval和node.js中的会话。
我有这段代码:
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是默认的吗?会话运作良好,否则我甚至不会打印出其他内部{}。
答案 0 :(得分:0)
get()
的匿名函数会运行。res.send()
并发送回复...到那时请求已经完成了。
如果要修改会话中的数据,请在完成特定请求之前执行此操作。