for循环里执行setTimeout无法实现延迟执行
//循环复制
$(".forExecute").click(function(){
var tableSign = $("#tableSign").val();
if(!(tableSign > 0)){
layer.msg("请选择要复制的数据");
return;
}
var forNum = $("#forNum").val();
for(var i = 1; i <= forNum; i++){
var data = {
"tableSign":tableSign,
"pageNo":i,
"pageSize":$(".pageSize").val(),
"startDate":$(".startDate").val()
};
setTimeout(executeDataCopy(data),5000);
}
})
function executeDataCopy(data){
$.ajax({
type: "get",
url: "executeCopyData.do",
data:data,
dataType: 'json',
success: function(data){
if(data != null && data.success != null){
layer.alert(data.msg);
} else {
layer.alert("系统繁忙,请稍后再试");
}
}
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
setTimeout
第一个参数是Function
,而你传了一个executeDataCopy(data)
,这是一个方法的调用(而不是方法本身),实际上你传给setTimeout
的是undefined
,可以按上面几位大佬的方法改。这样就可以了
setTimeout(executeDataCopy(data),5000);
这句executeDataCopy已经被立刻执行了,可以用下面的方式传参:
setTimeout(executeDataCopy,5000,data);