我正在尝试以 10 秒的延迟发送电子邮件。我写了这段代码:
$(document).ready(function() {
for (i = 0; i < 20; i++) {
setTimeout("SendEmail(" + i + ")", 5000);
}
});
function SendEmail(id) {
$.get("mimesender.php?id=" + id, function(data) {
var toAppend = "<span> " + data + "</span>"
$("#sentTo").append(toAppend);
});
}
服务器端代码(php)获取id并从数据库中选择指定id的邮件
$query="select email from clienti where id =".$id;
然后发送邮件,并发回当前邮件
echo email;
但是,这里有些问题。好像 js 函数等待 5 秒,然后一次显示所有 20 个电子邮件地址。
你能告诉我我做错了什么吗?任何“ sleep ”解决方法将不胜感激:)
最佳答案
使用间隔而不是循环。
工作演示: http://jsfiddle.net/xfVa9/2/
$(document).ready(function() {
var tmr;
var i=0;
tmr=setInterval(function(){
if(i<20){
SendEmail(i);
alert("Sent "+i)
i++;
}else{
clearInterval(tmr);
}
},5000)
});
关于JavaScript sleep 与 SetTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624427/