定期计时器不使用.load

时间:2013-01-04 02:39:49

标签: javascript jquery

问题:

我认为.load是阻塞的,但意图是异步的。

代码:

$(window).load(function(){
    $('#content').load('/ajax/databaseworking.php');
    setTimeout(function(){ $('#content').load('/ajax/databaseperform.php');}, 5000);
});
</script>

更多详情:

代码基本上调用databaseworking.php来进行一些数据库维护。每5秒钟进行一次ajax调用以获得进度。

我检查了我的日志。正在调用databaseworking.php和databaseperform.php。但是,不会定期调用databaseperform.php。换句话说,它只被调用一次。

作为测试,我注释掉了数据库工作调用。这导致按预期每个间隔调用进度函数。这让我相信负载存在问题。注意我已经检查并测试了databaseworking.php,那里不应该有错误。

2 个答案:

答案 0 :(得分:4)

setTimeout只会运行一次。我相信您想使用setInterval这是一个定期计时器

参考:https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout

答案 1 :(得分:0)

您需要在函数中设置新的超时。

$(window).load(function(){
    var loadContent = function() {
      $('#content').load('/ajax/databaseperform.php');
      setTimeout(loadContent, 5000);
    };
    loadContent();
});

您可以在此处查看为什么这可能比使用setInterval更可取:https://stackoverflow.com/a/731625/330013