JavaScript Asyn возвращается без ожидания ответа - PullRequest
0 голосов
/ 27 марта 2012

У меня есть функция JavaScript, которая делает ajax-запрос, и в зависимости от результата возвращает либо true, либо false.

. Проблема в том, что когда я вызываю функцию, она немедленно возвращается, безожидание запроса ajax для запуска и действительно верный правильный ответ.Как мне с этим справиться?

function check_value() {
   //Pseudo code
   ajax('some-url.php', function(response) {
      if(response.success) {
         return true;
      } else {
         return false;
      }
   });
}

if(check_value()) {
   alert("true");
} else {
   alert("false");
}

Видите проблему?check_value () выполняется и возвращается немедленно, до того, как запрос AJAX сработает и вызовет обратный вызов.

1 Ответ

1 голос
/ 27 марта 2012

Это неотъемлемая природа асинхронного вызова, вы никогда не знаете, когда это будет сделано. Поэтому вместо этого создайте два обработчика для успеха и ошибки:

function check_value() {
   //Pseudo code
   ajax('some-url.php', function(response) {
      if(response.success) {
         handleSuccess();
      } else {
         handleError();
      }
   });
}

function handleSuccess() {
    alert('true');
}

function handleError() {
    alert('false');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...