Показать сообщение отдельно
  #1 (permalink)  
Старый 15.01.2018, 12:59
Интересующийся
Отправить личное сообщение для antonhauff Посмотреть профиль Найти все сообщения от antonhauff
 
Регистрация: 16.10.2017
Сообщений: 23

Скрипт некорректно работает. Как можно исправить?
Есть юзерскрипт (некоторые переменные и шелуху, не очень информативную, я выбросил):
(function (window, undefined) {  // [2] нормализуем window
var w;
if (typeof unsafeWindow != undefined) {
    w = unsafeWindow;
} else {
    w = window;
}
if (w.self != w.top) {
    return;
}

function start() {
    var read = getread();
    checkResult(read);
}

function checkResult(last_read) {
    setTimeout(function() {
        if (last_read < getread()) {
        //1-ый блок
        } else if (last_read > getread()) {
        //2-ый блок
        } else {
        //3-ый блок
        checkResult(last_read);
        }
    }, 500);
}

function getread() {
}

function minimum_rate() {
}

function callnetwork() {
}
})(window);


Данный скрипт парсит онлайн чат некоторого сайта. Иногда на функции checkResult скрипт не может получить ответ от сайта. В таком случае выполняет третье условие (третий блок) и перезапускает функцию checkResult() снова. И так может быть несколько раз. Но порой, после неоднократного повторения третьего блока функции checkResult() в консоле можно увидеть ошибку "Failed to load resource: the server responded with a status of 429 ()" либо какой-нибудь другую (например иногда это может быть 500(), либо 502()). В таком случае, скрипт "зависает" на бесконечном выполнении третьего блока функции checkResult().

Подскажите пожалуйста, как можно поправить логику скрипта, чтобы не возникала такая ошибка?
Ответить с цитированием