在javascript函数中间暂停

Ada*_*one 0 javascript jquery post

我试图在函数中间暂停一段时间(5秒)

这是我尝试过的,但它不起作用

(function MessagesAjax() {
    $.post('/api/messages/get', function(data) {
        for (var i = 0; i < data.length; i++) {
            $.jGrowl(data[i].Body.toString().substring(0, 150), { header: 'New Message', sticky: true, });
            markDisplayed(data[i].Id);
        }
        setTimeout(MessagesAjax, 5000);
    });
})();

function markDisplayed(id) {
    setTimeout(5000);             //want it to pause here
    $.post("/api/messages/markdisplayed" + id);
    console.log("Marking displayed");
}
Run Code Online (Sandbox Code Playgroud)

我只需要它暂停,以便在将帖子发送回服务器之前有一段延迟

我几乎可以肯定setTimeout不是我想要的,但我不确定还能用什么

j08*_*691 5

更改标记显示为:

function markDisplayed(id) {
    setTimeout(function() {
        $.post("/api/messages/markdisplayed" + id);
        console.log("Marking displayed");
    }, 5000);
}?
Run Code Online (Sandbox Code Playgroud)

这将导致函数在执行其中的内容之前等待五秒钟.

  • 您应该将`setTimeout(MessagesAjax,5000);`从MessageAjax函数移动到markDisplayed超时.否则我相信你会很快建立一个请求队列. (2认同)