регулирование http запросов на расширение Google Chrome - PullRequest
1 голос
/ 22 июля 2011

Как оказалось, ответ на мой предыдущий вопрос не работает. Проблема в том, что я перегружаю сервер запросами. Процесс нуждается в дросселе, чтобы последующие запросы немного замедлялись. Вот код, о котором идет речь. Важный сегмент кода, которому требуется таймер или setInterval, - это то, что предваряется предупреждением «Профиль отклонен», хотя было бы приемлемо замедлить их оба. Есть предложения?

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

1 Ответ

1 голос
/ 22 июля 2011

Вам потребуется реализовать некоторую очередь на фоновой странице. Например:

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

Таким образом, вы будете обрабатывать один профиль за раз с предоставленной задержкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...