在javascript函数中间暂停

时间:2012-07-30 15:58:42

标签: 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");
}

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

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

2 个答案:

答案 0 :(得分:5)

更改markDisplayed:

function markDisplayed(id) {
    setTimeout(function() {
        $.post("/api/messages/markdisplayed" + id);
        console.log("Marking displayed");
    }, 5000);
}​

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

答案 1 :(得分:0)

替换

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

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

可能适合你。