每次执行后暂停循环

问题描述:

我有一个页面,其中我正在使用ajax插入记录...现在在JavaScript中我使用每个循环来循环html表格并插入数据库中的行。但发生是因为foreach循环执行速度快,有时,不插入一些记录..所以我想使循环睡眠一段时间后,它已经执行第一次,然后...每次执行后暂停循环

有没有什么办法来暂停for循环..我用setTImeout ..但它只是延迟它的第一次,而不是连续的时间... 这是我的代码。

 function AddTopStories() { 
      $("#tBodySecond tr").each(function (index) { 
       $.ajax({ 
        type: "POST", 
        url: "AjaxMethods.aspx/AddTopStoriesPosition", 
        data: "{'articleID':'" + $("td:nth-child(1)", this).text() + "','siteID':1}", 
        dataType: "json", 
        contentType: "application/json", 
        success: function (data) { 
         window.setTimeout(showSuccessToast(data.d), 3000); 
        }, 
        error: function (data) { 
         window.setTimeout(showSuccessToast("Error:" + data.reponseText), 3000); 
        } 
       }); 
      }); 
     } 

Please help me to resolve this issue... its utmost important. 
*************************************UPDATED CODE AS PER THE CHANGES BY jfriend00********* 

function AddTopStories() { 
    var stories = $("#tBodySecond tr"); 
    var storyIndex = 0; 

    function addNext() { 
     if (storyIndex > stories.length) return; // done, no more to get 
     var item = stories.get(storyIndex++); 
     alert($("td:nth-child(1)", item).text()); 
     addNext(); 
    } 
} 

这只是没有做任何事情......不通知......


我建议你打破它成做一件故事,然后你从第一次像这样的成功处理程序启动下一个故事的函数:

function AddTopStories() { 
    var stories = $("#tBodySecond tr"); 
    var storyIndex = 0; 

    function addNext() { 
     if (storyIndex >= stories.length) return; // done, no more to get 
     var item = stories.get(storyIndex++); 
     $.ajax({ 
      type: "POST", 
      url: "AjaxMethods.aspx/AddTopStoriesPosition", 
      data: "{'articleID':'" + $("td:nth-child(1)", item).text() + "','siteID':1}", 
      dataType: "json", 
      contentType: "application/json", 
      success: function (data) { 
       addNext();   // upon success, do the next story 
       showSuccessToast(data.d); 
      }, 
      error: function (data) { 
       showSuccessToast("Error:" + data.reponseText); 
      } 
     }); 
    } 
    addNext(); 
} 
+0

我更新了我的问题,我已经添加了您提供给我的代码..请检查我的问题...根据更新代码按照jfriend00更改..但它只是没有做任何事情。 – Abbas

+0

我忘了我刚添加的一行。你必须第一次调用addNext()。 – jfriend00

+0

你只是一个很棒的男人....什么是代码...只是伟大的..从来没有想过它可以完成..没有循环和超时....高超的人....非常感谢。 – Abbas

丑陋,但你可以伪造一个javascript“睡眠”使用本网站的方法之一:

http://www.devcheater.com/