我正在尝试调用ajax请求,直到它返回一个真值.我尝试了以下代码,但它不会在控制台中返回任何结果和错误.知道我做错了什么吗?
function getUserData() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.example.com/data.json", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var resp = JSON.parse(xhr.responseText);
return resp.status;
}
}
xhr.send();
}
setInterval(function () {
if (getUserData() === "true") {
alert("true");
}
}, 10000);
Run Code Online (Sandbox Code Playgroud)
getUserData 在内部调用异步函数,因此它在AJAX调用实际完成之前很久就返回了.
您可能希望尝试getUserData在失败案例中再次调用,而不是在setInterval循环中执行此操作.例如:
function getUserData() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.example.com/data.json", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var resp = JSON.parse(xhr.responseText);
if (resp.status) {
alert("true");
} else {
setTimeout(getUserData, 10000);
}
}
}
xhr.send();
}
getUserData();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5333 次 |
| 最近记录: |