Мне трудно охотиться на жука.Рассмотрим этот код (бизнес-части удалены для защиты невинных):
xhr.onreadystatechange = function() {
if (this.readyState != 4) {
debug("state was not 4, it was " + this.readyState);
return;
}
debug("state was 4, status is "+this.status);
if (this.status == 200 && this.responseText) {
//(blablabla)
handleSuccess();
return;
}
debug("no response text..., status is "+ this.status);
handleError();
};
В консоли я получаю такие вещи:
[DEBUG] state was not 4, it was 1
[DEBUG] state was not 4, it was 2
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was not 4, it was 3
[DEBUG] state was 4, status is 200
[DEBUG] no response text..., status is 200
[DEBUG] Handling error
[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0
[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0
[DEBUG] state was not 4, it was 1
[DEBUG] state was 4, status is 0
[DEBUG] no response text..., status is 0
Почему у меня такие результаты?
Это очень неожиданно и происходит совершенно случайно.Некоторые пользователи видят это, некоторые нет.Это часто встречается при установке расширений, но работает нормально при перезагрузке браузера или вручную.
Одна вещь уменьшает частоту: этот код вызывается с помощью window.timeout.Если я звоню через прямой вызов (используя другую функцию добавочного номера), он работает большую часть времени (не каждый раз).
Спасибо за ваше время!