jQuery AJAX调用冻结所有其他JS逻辑

时间:2017-08-07 09:09:41

标签: javascript jquery ajax asynchronous

我正在尝试获取* .srt文件并使用此脚本解析它:Parse a SRT file with jQuery Javascript

我遇到了AJAX调用阻塞其余JS代码的问题。我尝试添加同步,设置超时,我将其包装到setTimeout函数中,尝试使用另一个* .srt文件,但它仍无法正常工作。它不会抛出错误,它会警告结束对话框,解析的行存储在变量中,但是其他脚本被冻结。

var subtitles = [];
$.ajax({
  method: "GET",
  url: '{% static "file.srt" %}',
  async: true,
  error: function(data) {
    alert("error");
  },
  success: function(data) {
    function strip(s) {
      return s.replace(/^\s+|\s+$/g, "");
    }
    srt = data.replace(/\r\n|\r|\n/g, '\n');
    srt = strip(srt);

    var srt_ = srt.split('\n\n');
    var cont = 0;

    for (s in srt_) {
      st = srt_[s].split('\n');

      if (st.length >= 2) {
        n = st[0];

        i = strip(st[1].split(' --> ')[0]);
        o = strip(st[1].split(' --> ')[1]);
        t = st[2];

        if (st.length > 2) {
          for (j = 3; j < st.length; j++)
            t += '\n' + st[j];
        }

        //define variable type as Object
        subtitles[cont] = {};
        subtitles[cont].number = n;
        subtitles[cont].start = i;
        subtitles[cont].end = o;
        subtitles[cont].text = t;

        document.body.innerHTML += " (" + subtitles[cont].start + " - " + subtitles[cont].end + " ) " + subtitles[cont].text + "<br>";

      }
      cont++;
    }
    alert("end");
  },
  timeout: 2000,
});

请帮帮我。

0 个答案:

没有答案