1

私の前の質問に対する答えがうまくいかないことが判明しました。問題は、リクエストでサーバーに過負荷をかけていることです。後続のリクエストが少し遅くなるように、プロセスにはスロットルが必要です。これが問題のコードです。タイマーまたは setInterval を必要とするコードの重要な部分は、アラート「Profile Rejected」で始まる部分ですが、両方を遅くしても問題ありません。助言がありますか?

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

1 に答える 1

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

このようにして、提供された遅延で、一度に 1 つのプロファイルを処理します。

于 2011-07-22T16:52:22.540 に答える