我有一个简单的Ajax请求,它根据结果返回true或false,
function myRequest(){
$.ajax({
url: "/",
method: "GET",
contentType: "application/json",
dataType: 'json',
}).done(function (data) {
if (data['code'] !== "success") {
return false;
}
else {
return true;
}}).fail(function (xhr, textStatus, errorThrown) {
return false;
});
}
if(myRequest()){
//do someting
}
为if语句执行myRequest()时,它不会等待Ajax结果,并且永远不会验证。 我在这里阅读了诺言,我尝试过,但是仍然是同样的问题。
Ty!
[编辑]
因此,我会听从您的答复,然后重做承诺。效果更好:
function myRequest(){
return new Promise((resolve, reject) =>{
$.ajax({
url: "/",
method: "GET",
contentType: "application/json",
dataType: 'json',
}).done(function (data) {
if (data['code'] !== "success") {
resolve(false);
}
else {
resolve(true);
}}).fail(function (xhr, textStatus, errorThrown) {
rejected(errorThrown);
});
});
}
myRequest().then(function (val) {
if(val){
return true;
}
});