每次执行后暂停循环
问题描述:
我有一个页面,其中我正在使用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();
}
我更新了我的问题,我已经添加了您提供给我的代码..请检查我的问题...根据更新代码按照jfriend00更改..但它只是没有做任何事情。 – Abbas
我忘了我刚添加的一行。你必须第一次调用addNext()。 – jfriend00
你只是一个很棒的男人....什么是代码...只是伟大的..从来没有想过它可以完成..没有循环和超时....高超的人....非常感谢。 – Abbas