簡體   English   中英

SetInterval中的SetTimeout

[英]SetTimeout inside SetInterval

我正在使用Node js作為服務器。 為了避免在頁面刷新時立即斷開用戶的連接並給重新加載提供緩沖時間,我在SetInterval中使用SetTimeout,如下所示。 在Disconnect事件中,用戶被添加到陣列“ remove”。 如果用戶不返回,則最終將其刪除。 我正在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);
}

該代碼工作正常。
但是可以在服務器端進行這種循環嗎? 由於執行延遲,它們會重疊嗎? 會准時執行嗎?

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

在服務器端使用循環是可以的,但是您需要使用閉包來處理它們,就像上面的示例一樣。 封閉將幫助他們在正確的上下文中執行代碼,並避免重疊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM