Ajax событие onreadystatechange

Почему событие onreadystatechange происходит 3 раза?
` var answerEmailIsUsed = false;
var XHR = (“onload” in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var xhr = new XHR();
var counter = 0;
xhr.open(‘GET’, ‘https://aqueous-reaches-8130.herokuapp.com/check-email/?email=’ + inputStr, true);

	xhr.onreadystatechange = function() { 
                    counter += 1;
                    console.log( counter ) // 1, 2, 3
		if (xhr.status != 200) {
			console.log(xhr.status + ': ' + xhr.statusText);

		} else {
			if (xhr.response.indexOf('true') !== -1 ){ // not used
				answerEmailIsUsed = false;
			} else {
				answerEmailIsUsed = true;
			}
		}
	}
	xhr.send();

Нашел, происходит каждый раз при изменении состояния свойства readyState.

Существует набор состояний, в которых может находить объект XMLHTTPRequest, и при каждом переходе из одного состояние в другое выполняется коллбек onreadystatechange. Зачастую тебе интересно состояние готовности ответа. Но и другие будут важны, чтобы диагностировать недоступность сервера и предпринять действия когда ответ не получен за приемлемое количество времени.

1 лайк

Спасибо Дима

Обычно нативные обработчики с таких случаях начинаются с

xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
        if (xhr.status == 200 ...