Неожиданные рекурсии в браузере сафари - PullRequest
0 голосов
/ 07 ноября 2019

Я пытался реализовать длинный опросный чат. Мой чат работает правильно, кроме одного браузера - сафари. Я получаю новое сообщение с помощью этого кода (здесь только часть, только для понимания рекурсии):

    let errorCounter = 0;

    let getChatText = function () {
        let options = {
            //headers and other configuration, which needed for XMLHttpRequest
        };

        let responseHandler = function(responseCode, body) {
            switch (responseCode) {
                //handle response codes
                case 200:
                    errorCounter = 0; //on success response
                // other codes handle here
                default:
                    errorCounter++;
            }

            if (errorCounter >= 30) { // 30 just for testing
                endChatSession(true);
            } else {
                getChatText(); //recursion
            }
        };

        requestCall(options, false, responseHandler);
    };

Если в какой-то момент я перезагружаю страницу - она ​​не останавливается, но пытается позвонить много раз (30в моем случае) и endChatSession на слишком много ошибок. Но в других браузерах (Chrome, Firefox и т. Д.) - он немедленно останавливает рекурсию и перезагружает страницу.

Вот вывод консоли до перезагрузки страницы Safari (сохранить журнал): console output

Question: Как я могу остановить рекурсию при перезагрузке страницы в Safariпотому что это не повод для endChatSession

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