Результат ajax функции как значение условия в JavaScript?

Есть функция1 которая вызывает $.ajax и получает ответ в виде true|false. Есть функция2, которая срабатывает при событии и проверяет на условие несколько значений, в том числе и значение функции1. Но так функция1 выполняет асинхронный запрос, то условия в функции2 всегда срабатывает как false. Вопрос, как сделать правильное выполнение условий с асинхронным запросом?

function fun1 (callback) {
  $.ajax({
    ...
    success: function(res) {
      callback(res);
    }
  })
}

function fun2(val1, val2) {
  var result;
  if (val1) result=true;
  else if (fun1(function(res) {return res;}))  result=trrue;
  else if (val2) result=true;
  else result=false;
  return result;
}
  • Вопрос задан
  • 3084 просмотра
Решения вопроса 1
@GeraldIstar
Frontend
В таких случаях очень удобно использовать promis'ы. Например q.js
https://github.com/kriskowal/q
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
как вам уже написали выше, промисы идеально подходят для этого. К слову в jquery они есть, и все ajax методы возвращают именно промис.

Пример
Ответ написан
Комментировать
Cobalt
@Cobalt
Программист - этим все сказано
Вы уверены что в ответ получаете булево значение? Точно не текст?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы