一尘不染

使用SetTimeout进行javascript睡眠

ajax

我正在尝试以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个电子邮件地址。

你能告诉我我做错了什么吗?任何“睡眠”的解决方法将不胜感激:)


阅读 244

收藏
2020-07-26

共1个答案

一尘不染

您应该创建一个在5秒钟后调用自身的函数

var i=0;

function sendEmailNow() {
     SendEmail(i);
     ++i;
   if(i<20) {
        setTimeout(sendEmailNow, 5000);
    }
}
2020-07-26