2014-02-06 100 views
1

我們正在使用輪詢功能,但有4個地方需要確保輪詢正在運行。我們如何確定當前的輪詢實例是否正在運行,因此我們不會創建另一個輪詢實例,並且重疊的輪詢正在進行?Ajax長輪詢如何檢測它是否正在運行

function longPoll(){ 
     // do the request 
     chrome.storage.local.get("userAuth", function(data) { 
     if(data.hasOwnProperty('userAuth')){ 
      if(!localStorage.disableNotifications){ 
      checkUnread(); 
      } 
     } 


     }); 
     setTimeout(function(){ 
     longPoll(); 
     console.log('polling: '+new Date().getTime()); 
     }, 5000); 
    }; 

回答

2

您可以設置一個布爾變量來跟蹤您的輪詢當前是否正在運行。像這樣的例如:

var polling = false; 

function longPoll(){ 

    //do nothing if already polling 
    if(polling) 
    { 
    return; 
    } 

    //set polling to true 
    polling = true; 

    //rest of function code goes here... 

    //set polling to false after process is finished 
    polling = false; 

    setTimeout(function(){ 
    longPoll(); 
    console.log('polling: '+new Date().getTime()); 
    }, 5000); 
}; 
相關問題