SetTimeout inside SetInterval



我正在使用Node js作为服务器。为了避免在页面刷新时立即断开用户连接并为重新加载提供缓冲时间,我在 SetInterval 中使用 SetTimeout,如下所示。用户被添加到"断开连接"事件的阵列"删除"中。如果用户不返回,则最终会将其删除。我在饼干的帮助下这样做

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);
}

代码工作正常。
但是在服务器端有这种循环可以吗?它们是否会因延迟执行而重叠?会按时执行吗?

for (var i=0;i<=10;i++) {
(function(ind) {
setTimeout(function(){console.log(ind);}, 1000 + (3000 * ind));
})(i);
}

在服务器端使用循环是可以的,但你需要通过使用闭包来处理它们,如上例所示。 闭包将帮助他们在正确的上下文中执行代码,并避免重叠。

最新更新