+ -
当前位置:首页 → 问答吧 → 如何防止setTimeout重复运行???

如何防止setTimeout重复运行???

时间:2009-06-26

来源:互联网

复制代码
  1. $(document).ready(function() {
  2.     load_table();
  3. });
  4. function load_table(cat) {
  5.     $.post(.........);
  6.     window.setTimeout(function() {
  7.         load_table();
  8.     }, 5000);
  9. }


以上代码运行良好

但是, 这个load_table是根据点击动态载入不同的数据的
变成这样以后, 每点击一次#cats li, 就会执行一次死循环, 我快疯了
一下子双核3.0CPU就到了70%, 怎么办啊...
每次load_table都重复死循环执行了
复制代码
  1. $(document).ready(function() {
  2.     load_table();
  3.     $('#cats li').click(function() {
  4.         var cat = $(this).text();
  5.         load_table(cat);
  6.     });
  7. });
  8. function load_table(cat) {
  9.     $.post(.........);
  10.     window.setTimeout(function() {
  11.         load_table();
  12.     }, 5000);
  13. }

作者: vps4   发布时间: 2009-06-26

你为什么不在post的callback里执行load_table

作者: keakon   发布时间: 2009-06-26

这是个定时动态载入数据自动刷新的表格

作者: vps4   发布时间: 2009-06-26

那就用setInterval啊

作者: keakon   发布时间: 2009-06-26

setInterval就无法根据点击来改变动态加载的参数了
必须用setTimeout, 但又如何在点击改变参数后, 停止之前的进程?

作者: vps4   发布时间: 2009-06-26

$(document).ready(function() {
    var load_table=function(cat){
    var a;
    if(/*已完成*/)
    {
         $.post(.........);
    }
    else{
        alert=setTimeout(load_table,5000)
    }

});

试试这个吧

作者: luckuny   发布时间: 2009-06-29

设置个中间变量,第一次进的时候是true  之后设置为FALSE  load_table 里判断这个变量,不就只执行一次啦

作者: margo   发布时间: 2009-06-30