JavaScript sleep 与 SetTimeout

标签 javascript jquery ajax settimeout

我正在尝试以 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/

相关文章:

javascript - &lt;!-- 在 JavaScript 中是什么意思?

javascript - React-virtualized 动态高度列表呈现最初堆叠的所有内容

javascript - 带有松散增强模块的 JSDoc 无法解析某些项目

javascript - nivo-slider 前面的图像被剪切

javascript - 停止在for循环中执行ajax

javascript - 如何使用 jQuery 在当前选定行下方添加一行(基于下拉输入)?

javascript - 重构代码以在 jQuery 1.3.2 上工作

javascript - 我的观点之一没有出现在我的主人 - Laravel

jQuery 延迟 AJAX 调用 : possible scope issue

javascript - 从 json 加载后无法在 Canvas 上渲染对象