我使用Node js作为服务器。为避免页面刷新时用户立即断开连接,并为重新加载提供缓冲时间,请按照SetInterval中的SetTimeout进行重新加载。用户被添加到数组"删除" on Disconnect事件。如果用户不返回,则最终将其删除。我是在 Cookies
的帮助下做到这一点的var remove=[];
socket.on('disconnect', function(){
remove.push(socket.id);
});
setInterval(myTimer, 120000);
function myTimer()
{
var removed = remove;
remove=[];
setTimeout(function()
{
for(i=0; i < removed.length; i++)
{
connection.query("DELETE FROM users WHERE socketid='"+removed[i]+"'");
console.log(removed[i]+" is disconnected");
}
}, 60000);
}
代码工作正常。
但是在服务器端有这种循环是否可以?由于延迟执行,它们会不会重叠?会按时执行吗?
答案 0 :(得分:0)
for (var i=0;i<=10;i++) {
(function(ind) {
setTimeout(function(){console.log(ind);}, 1000 + (3000 * ind));
})(i);
}
在服务器端使用循环很好,但是你需要使用闭包来处理它们,就像上面的例子一样。 闭包将帮助他们在正确的上下文中执行代码,并避免重叠。