某些文件正在后端创建(最多1分钟)。我写了一个函数来检查文件是否准备就绪
function check_for_file() {
$.ajax({
url: '/check/', // check if file exists
success: function(data) {
location.replace('/hello/'); // redirect to download
return true;
},
failure: function(data) {
alert('Got an error');
}
});
return false
}
a = check_for_file();
}
// a= false
// while (a == false) {
// a = check_for_file();
// }
console.log(a);
这很好用。但是我需要创建一个循环,它将在文件未准备好时进行检查。我该怎么办?
!!!!!!!! 查看第一条评论的答案
答案 0 :(得分:1)
a = check_for_file();
会立即返回。
您无法运行异步并返回结果。
顺便说一句, failure
不是一个事件 - 它被称为失败或错误
成功,错误/失败或在测试文件未准备好之后使用setTimeout IN成功/完成或失败调用函数afgain,具体取决于您如何传递“尚未找到文件”
function check_for_file() {
$.ajax({
url: '/check/', // check if file exists
success: function(data) {
if (data.fileExists) { // result from server
location.replace('/hello/'); // redirect to download
}
else {
setTimeout(check_for_file,2000); // try again
}
},
error: function(data) {
alert('Got an error');
}
});
}