如何在javascript中设置定时间隔?

Posted

技术标签:

【中文标题】如何在javascript中设置定时间隔?【英文标题】:How can I set up a timed interval in javascript? 【发布时间】:2010-09-20 07:34:15 【问题描述】:

以下 javascript 应该设置一个间隔,以便 json 对象列表中的新项目将缓慢添加到列表顶部,但它们会同时添加。

<script type="text/javascript">
    var json;
    var count = 0;
    $(document).ready(function() 
        $.ajax(
            type: "POST",
            url: "/Home/PublicTimeLine",
            data: "",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) 
                json = eval(msg);
                createRow();
            

        );
    );

    function createRow() 
        if (count < json.length) 
            var data = json[count];
            var row = document.createElement("div");
            $(row).hide();
            row.appendChild(document.createTextNode(data.text));
            $(document).find("#results").prepend(row);
            $(row).fadeIn("slow");
            count++;
            setTimeout(createRow(), 3000);
        
    
</script>

<div id="results">
</div>

【问题讨论】:

【参考方案1】:

如果我是你,我会以稍微不同的方式解决它。为什么不将所有数据添加到您的页面上,而只是隐藏它并仅在您需要时显示。这样您就不必担心闭包之类的问题。

var intervalId;
$.ajax(
    type: "POST",
    url: "/Home/PublicTimeLine",
    dataType : "json",
    success : function (msg) 
        var json = eval(msg); // is this even needed?
        $.each(json, function(ind, data) 
            $("<div></div>")        // use jQuery to create the div
                .hide()
                .text(data)        // you can use jQuery to add contents too. (use .html() if you need HTML)
                .prependTo('#results')
            ;
        );
        intervalId = setInterval(showRow, 3000);
    
);
function showRow() 
    var $myDiv = $('#results div:hidden:last');
    if ($myDiv.length) 
        $myDiv.show('slow');
     else 
        clearInterval(intervalId);    // none more to show, stop checking
    

【讨论】:

以上是关于如何在javascript中设置定时间隔?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中设置定时器?

如何在 UNNotificationRequest 中设置重复间隔和触发日期

如何在pyspark中设置计数id的日期间隔?

如何在 authorize.net 中设置试用期间隔?

如何在 coredata 中设置日期和时间间隔的谓词

如何在lua中设置事件之间的时间间隔