javascript - 中断包含 AJAX 类型函数的 for 循环

标签 javascript jquery ajax

我是 Javascript 方面的大菜鸟,这可能是一长串问题中的第一个!

这是我正在尝试做的事情:

我有一个文件夹,其中包含多个名为 art1.txt、art2.txt 等的 .txt 文件(总数可能会有所不同,这很重要)。

我正在构建一个脚本,该脚本将提取每个 txt 文件的文本信息并将它们一个接一个地附加到网页上。这是:

function init(){

 for (var i=1; ; i++) {

  $(function doAjax (){
    var getArt = {  "method"  : "get", 
                    "url"     : "data/ConstitutionLaw/art" + i +".txt", 
                    "success" : successHandler,
                    "error"   : endLoop
                 };

    $.ajax(getArt);

    function successHandler(data){
        console.log(data);
        var newArt = document.createElement('p');
        newArt.setAttribute('class', "article");
        newArt.innerHTML = data;
        $('#artBody').append(newArt);
        }; //end of successHandler
  }); //end of doAjax

    function endLoop() { /* end the for loop */ };
 }; //end of for
} //end of init

目前,我无限次执行 doAjax 函数,因为我不知道我有多少个 txt 文件。如果代码找不到文件 artN.txt (意味着文件夹中没有更多文件),我想通过执行 endLoop 函数来打破循环

我尝试在函数 doAjax 之后使用 if 语句,但问题是它是一个异步函数,并且 for 循环不会等待 doAjax 结束才开始另一个循环。

如何让 for 循环等到 doAjax 完成后再开始新的循环?

此外,如果您有任何让整体不那么笨拙的建议,请告诉我。 :)

感谢您的阅读!

最佳答案

这应该可以帮助您完成您想要的事情。尽管如此,我仍然建议使用服务器端脚本语言来更有效地完成此任务。

function init(){
  var stop = false;

  for(var i=1; ; i++) {
    $.ajax({
      "async"   : false,
      "method"  : "get",
      "url"     : "data/ConstitutionLaw/art" + i +".txt",
    }).success(function(data){
      console.log(data);
      var newArt = document.createElement('p');
      newArt.setAttribute('class', "article");
      newArt.innerHTML = data;
      $('#artBody').append(newArt);
    }).fail(function(){
      stop = true;
    });

    if(stop) {
      break;
    }
  }

}

关于javascript - 中断包含 AJAX 类型函数的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552381/

相关文章:

javascript - 如何在不重新启动应用程序的情况下清除所有用户的快速 session ?

javascript - 如何在 xsl 中调用外部 javascript 函数?

javascript - 显示/隐藏 jQuery 不适用于 Ajax

javascript - 如何通过外部 JS 文件访问 ruby​​/rails 应用程序变量

javascript - 使用 .getJSON 获取 Play 商店应用详细信息时出现跨源 block 请求 [CORS] 错误

javascript - TinyMCE 在加载 AJAX 的 DIV 中重新初始化后消失

javascript - 如何将数据筛选和排序到 DataTables 单元格

javascript - Node.js 变量在函数之外使用

javascript - AJAX:人们在没有数据库的情况下在页面上实时交互?

javascript - 总计 Jquery 汇总