Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Try...Cath и The server responded with a status of 429 () (https://javascript.ru/forum/events/72299-try-cath-i-server-responded-status-429-a.html)

antonhauff 20.01.2018 13:08

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

Есть ли возможность как-то отлавливать ошибки и перезапускать скрипт? Если это можно делать через try...cath то вопрос будет довольно глупый - что мне записывать в try, и что прописать в cath?

(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() {
}

setInterval(start, 500);
})(window);

laimas 20.01.2018 16:06

Что есть getread()?

antonhauff 20.01.2018 18:10

function getread() {
    var read_text = $('.read_select .chosen-single span').text();
    var regex = /[+-]?\d+(\.\d+)?/g;
    var floats = read_text.match(regex).map(function(v) {
        return parseFloat(v).toFixed(8);
    });
    return floats[0];
}

antonhauff 20.01.2018 18:11

Алгоритм, который "парсит" чат для "отлова" изменений.

laimas 20.01.2018 18:12

Ищите в своем алгоритме что конкретно выполняет запрос, ему и анализировать статусы ответа. Возврат сервером статуса 500 не является исключением.


Часовой пояс GMT +3, время: 19:35.