如何在javascript中使用计时器?

时间:2012-02-19 01:37:37

标签: javascript jquery timer

我想做以下申请:

1)我想使用ajax检索消息。 (Jquery的)

2)当我阅读消息时 - 我想等待10秒钟来检索下一条消息

3)然后再等10秒钟检索下一条消息

4)数据库中的所有行。

在这种情况下如何使用计时器?

如何开始然后停止计时器?

function loadMessage(user_id)
    {
        $.post('ActionScripts/Message.php',{
            user_id: user_id
        }, function(data) {

    //data

            },"json");
    }

3 个答案:

答案 0 :(得分:4)

function loadMessage(user_id)
    {
        $.post('ActionScripts/Message.php',{
            user_id: user_id
        }, function(data) {

            //data
            setTimeout(function(){loadMessage(user_id); }, 10000);

            },"json");
    }

答案 1 :(得分:1)

我更喜欢在前一个完成之后调用下一个ajax请求(不如10000间隔那么重要),但即使第一个失败,你也必须调用下一个...

function loadMessage(user_id) {
    $.ajax({
    type: "POST",
    url: 'ActionScripts/Message.php',
    data: { user_id: user_id }
    dataType: 'json',
    async: true,
    cache: false,
    timeout:30000,
    success: function(data){
      // do what you need with the returned data...
      setTimeout(function(){loadMessage(user_id); },10000);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
      //do what you want with the error
      setTimeout(function(){loadMessage(user_id); },10000);
    }
  });
}

答案 2 :(得分:0)

以下实现调用服务器并每10秒执行一次:

function loadmessage (user_id) {
    $.post('ActionScripts/Message.php', {
        user_id: user_id
    }, function (data) {

        //data
    }, "json");
}
var interval = setInterval(function() { loadmessage(5345) }, 10000);

要停止计时器,请使用clearInterval

clearInterval(interval);

重新启动计时器 - initialize interval变量:

var interval = setInterval(function() { loadmessage(5345) }, 10000);