【问题标题】:How do I get this javascript to run every second? [duplicate]如何让这个 javascript 每秒运行一次? [复制]
【发布时间】:2011-08-04 01:43:21
【问题描述】:

如何让这个 javascript 每秒运行一次?

源代码:

<script type="text/javascript">
$(function() {
    //More Button
    $('.more').live("click",function()  {
        var ID = $(this).attr("id");
        if(ID) {
            $("#more"+ID).html('<img src="moreajax.gif" />');

            $.ajax({
                type: "POST",
                url: "ajax_more.php",
                data: "lastmsg="+ ID, 
                cache: false,
                success: function(html){
                    $("ol#updates").prepend(html);
                    $("#more"+ID).remove();
                }
            });
        } else {
            $(".morebox").html('no posts to display');
        }

        return false;

    });
});

</script>

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    使用setInterval() 每 x 毫秒运行一段代码。

    您可以将希望每秒运行的代码封装在一个名为runFunction 的函数中。

    原来是这样:

    var t=setInterval(runFunction,1000);
    

    要停止它,你可以运行:

    clearInterval(t);
    

    【讨论】:

    • setTimeout(runFunction,1000) 请。不要传递字符串。而且它不会每秒秒执行一次代码(至少缺少一些东西)。
    • 清理:var t=setInterval(mainLoop,1000); $( window ).unload(function() { clearInterval(t); console.log("Handler for .unload() called."); return ""; });
    • @hannunehg 为什么?
    【解决方案2】:

    使用setInterval:

    $(function(){
    setInterval(oneSecondFunction, 1000);
    });
    
    function oneSecondFunction() {
    // stuff you want to do every second
    }
    

    这是an articlesetTimeoutsetInterval 之间的区别。两者都将提供您需要的功能,它们只是需要不同的实现。

    【讨论】:

    • 我尝试(多次)编辑时收到一条错误消息:“建议的编辑队列已满”(我以前从未见过该消息)。 about.com 链接已失效。 About.com 更名为Dotdash.com,它将子域和类别从 About.com 拆分为多个域,如thoughtco.com 和许多其他垂直领域。根据wired.com,这发生在2017年5月2日。这是一个存档副本(2016年在Archive.org上):setTimeout or setInterval
    • 谢谢@KevinFegan - 不知道为什么你不能编辑,但我现在更新了链接。好地方:)
    【解决方案3】:

    您可以使用 setTimeout 来运行函数/命令一次,或使用 setInterval 以指定的时间间隔运行函数/命令。

    var a = setTimeout("alert('run just one time')",500);
    var b = setInterval("alert('run each 3 seconds')",3000);
    
    //To abort the interval you can use this:
    clearInterval(b);
    

    【讨论】:

      【解决方案4】:
      window.setTimeout(func,1000);
      

      这将在 1000 毫秒后运行 func。因此,在 func 结束时,您可以再次调用 window.setTimeout 以进入 1 秒的循环。你只需要定义一个终止条件。

      Reference

      【讨论】:

        【解决方案5】:

        你可以使用setInterval:

        var timer = setInterval( myFunction, 1000);
        

        只需将您的函数声明为 myFunction 或其他名称,然后不要将其绑定到 $('.more') 的实时事件。

        【讨论】:

          【解决方案6】:

          使用setInterval(func, delay)delay 毫秒运行一次func

          setTimeout()delay 毫秒后运行你的函数一次 -- 它不会重复运行它。一种常见的策略是使用 setTimeout 运行代码,并在代码末尾再次调用 setTimeout。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-15
            • 1970-01-01
            • 1970-01-01
            • 2023-01-22
            相关资源
            最近更新 更多