@Prepod21

Как правильно вызвать асинхронный get запрос, если нужно дождаться ответа в функции?

Есть функция валидации имени пользователя и ее вызов
if (!user_name_is_valid()){
 alert("username is invalid!");
}

function user_name_is_valid(){
let response = $.ajax({
        type: "POST",
        url: "/api/check_username",
        data: username,
        dataType: 'text',
        async: false
}).status;
    if(response === 204){
        return false;
    }
    else if(response === 302){
        return true;
    }

}


браузер пишет, что синхронный ajax deprecated. Как переписать функцию, чтобы сделать запрос асинхронным и при этом дождаться правильного ответа в функции user_name_is_valid
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
Либо так.
function user_name_is_valid(){
  let response = $.ajax({
    type: "POST",
    url: "/api/check_username",
    data: username,
    dataType: 'text',
    async: false
  }).status;

  if(response === 204){
    return false;
  } else if(response === 302){
    return true;
  }
}

setTImeout(function() {
  if (!user_name_is_valid()){
    alert("username is invalid!");
  }
}, 3000)


Либо так
const asyncVar = setTimeout(user_name_is_valid, 3000);

function user_name_is_valid() {
  let response = $.ajax({
    type: "POST",
    url: "/api/check_username",
    data: username,
    dataType: 'text',
    async: false
  }).status;

  if(response === 204){
    return false;
  } else if(response === 302){
    return true;
  }
}

if (!asyncVar){
  alert("username is invalid!");
}

Вообщем поиграйтесь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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