2011-07-22 68 views
1

事實證明,我以前的問題的答案不起作用。問題是我用請求重載服務器。這個過程需要一個節流閥,以便隨後的請求產生一點放緩。這是有問題的代碼。需要定時器或setInterval的重要代碼片段以警報「配置文件被拒絕」開頭,儘管可以放慢它們的速度。有什麼建議麼?限制http請求谷歌瀏覽器擴展

if (greetThisOne==true && !bGreeted) 
{ 
    //alert ("Requesting Message Page"); 
    console.log="Message Page Requested"; 
    chrome.extension.sendRequest({cmd: "openMessage", url: messageLink, keyWordsFound: keyWordList, greeted: bGreeted});  
} 
else 
{ 
    //alert("Profile Rejected"); 
    console.log="Profile Rejected"; 
    chrome.extension.sendRequest({cmd: "profileRejected", url: messageLink, keyWordsFound: keyWordList, greeted: bGreeted}); 
} 
+0

那麼問題或問題是什麼?你嘗試了一個計時器,但它不起作用? –

回答

1

您需要在後臺頁面中實現一些隊列。例如:

var rejectedProfiles = []; 
processRejectedProfiles(); 

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if(request.cmd == "profileRejected") { 
     //add to the end of queue 
     rejectedProfiles.push({url: request.url, other: request.parameters}); 
    } 
    sendResponse({}); 
}); 

function processRejectedProfiles() { 
    if(rejectedProfiles.length > 0) { 
     //get the oldest element in queue 
     var profile = rejectedProfiles.shift(); 

     //process profile 
     ... 
    } 

    //process next entry in the queue in 3 seconds 
    setTimeout(processRejectedProfiles, 3000); 
} 

這樣,您將可以處理一次一個配置文件,以提供延遲。

+0

這是一個非常優雅的解決方案。 – Jerome