Я пытался реализовать длинный опросный чат. Мой чат работает правильно, кроме одного браузера - сафари. Я получаю новое сообщение с помощью этого кода (здесь только часть, только для понимания рекурсии):
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 (сохранить журнал):
Question
: Как я могу остановить рекурсию при перезагрузке страницы в Safariпотому что это не повод для endChatSession