JavaScript异步返回而不等待响应

时间:2012-03-27 08:22:11

标签: javascript asynchronous

我有一个JavaScript函数,它发出一个ajax请求,并根据结果返回truefalse

问题是当我调用函数时它立即返回,而不是等待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 个答案:

答案 0 :(得分:1)

这是异步调用的固有特性,你永远不知道它什么时候会完成。因此,为成功和错误创建两个处理程序:

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');
}