Reputation: 2332
Some file is creating in backend (up to 1min). I wrote a function to check if file is ready
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);
This works fine. But I need to make a loop which will check while file is not ready. What should I do?
!!!!!!!! Look at first comment for an answer
Upvotes: 1
Views: 206
Reputation: 177851
a = check_for_file();
will return immediately.
You cannot run async and return a result.
failure
is not an event by the way - it is called fail or error
Call the function afgain in the success, error/fail or done after testing file is not ready using a setTimeout IN the success/done or failure depending on how you pass "file not found yet"
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');
}
});
}
Upvotes: 1