Headmaster
Headmaster

Reputation: 2332

wait, while file is ready

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

Answers (1)

mplungjan
mplungjan

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

Related Questions