-1
我是JavaScript新手,一直在用node.js中的函數setInterval和會話掙扎。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是默認我刷新頁面後解釋一下嗎?會話運行良好,否則我甚至不會打印出其他內容{}。
但這是目的。在res.send()之後更改數據。但是當我在10秒後發出另一個請求時,我應該看到已經更改了數據。要麼?我很抱歉,如果我是愚蠢的,但我仍然不明白。 – Matumizuro
@Matumizuro我認爲一旦請求完成,會話狀態就立即被持久化,所以你正在改變沒有人感興趣的會話變量的內存副本。 –
@Joachim Isaksson哦,我明白了。我能做些什麼來每隔X秒更改會話數據而不依賴於用戶的請求? – Matumizuro