0

可能重复:
Javascript:setInterval() 行为,0 毫秒

我只是想听听,如果将时间设置为 0 毫秒的 setInterval 存在问题?会不会有性能问题?拥有例如 1000 毫秒会更好吗?

我有这个脚本:

var countdown_id = setInterval(function() {
    var now = (new Date()).getTime()-(2*60*60*1000);
    ;
    $('.product').each(function() {
        var elm = $(this).attr('id');
        var prod_id = $("#"+elm+" #hidden-"+elm).val();


        var expires = $('#date-end-' + prod_id).val()*1000;

        var seconds_remaining = Math.round((expires - now)/1000);

        var hours = FormatNumberLength(Math.floor(seconds_remaining/(60*60)), 2);
        var sec_remaining = seconds_remaining-(hours*60*60);
        var minutes = FormatNumberLength(Math.floor(sec_remaining/60), 2);
        var sec_remaining2 = sec_remaining-(minutes*60);
        var seconds = FormatNumberLength(sec_remaining2, 2);

        var timestr = hours + ":" + minutes + ":"+seconds;

        if (expires) {
            if (seconds_remaining > 0) {
                $('#'+elm+' .time_left div').text(timestr);
            }
            else {
                $(this).hide();
            }
        }
        $('#'+elm+' .time_left div').text(timestr);
    });
}, 0);

提前致谢!

4

2 回答 2

1

如果将时间设置为 0 毫秒的 setInterval 存在问题?

您不能将间隔设置为0,因为浏览器会忽略它。

会不会有性能问题?拥有例如 1000 毫秒会更好吗?

当然,如果可能的话,1000 毫秒比 10(不是零)要好。
每 10 毫秒做一件事比每 1000 毫秒做一次精确的事情要花费更多。

于 2012-09-23T17:30:57.480 回答
1

Javascript 不是多线程的,它只是通过延迟执行来模拟它。当计时器达到您的超时间隔时,它将暂停所有其他执行并运行您告诉它的代码。因此,您可能需要注意间隔时间有多短。如果您不小心,它可能会损坏您的浏览器。

于 2012-09-23T17:32:54.707 回答