等待,文件准备好了

时间:2017-04-17 11:15:30

标签: javascript jquery ajax asynchronous

某些文件正在后端创建(最多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);

这很好用。但是我需要创建一个循环,它将在文件未准备好时进行检查。我该怎么办?

!!!!!!!! 查看第一条评论的答案

1 个答案:

答案 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');
    }
  });
}