我有一个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请求触发并调用回调之前立即返回。
答案 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');
}