@MdaUZH

Вернуть результат выполнения функции?

Всем привет, столкнулся с такой проблемой..:

есть функция:
function checkIsNumber(){
	var e = document.querySelector('#telZZ');
	var xhr = new XMLHttpRequest();
	var body = 'num=' + encodeURIComponent(e.value);

	xhr.open("POST", '/office/isnumber', true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
	xhr.onreadystatechange=function(){
		if (xhr.readyState != 4) return;
		var response = JSON.parse(xhr.response);
		if(response.err == 255){
			alert('ugu');
                        return true;
		}
		else{
			alert('aga');
			return false;
		}
	}
	xhr.send(body);
}


И нужно использовать в проверке результат функции:
...
if(checkIsNumber()){
    alert('ogo');
}


Но checkIsNumber() всегда возвращает undefined, в чем дело и как тут быть?
Подскажите пожалуйста
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
Дело в том, что у вас используется асинхронность. В момент вызова checkIsNumber ответ еще не пришел от сервера. Решить эту проблему можно либо через callback-функцию, либо через Promise. Выбирайте, что удобнее и вперед :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы