可能重复:
Javascript: setInterval() behaviour with 0 milliseconds
我只想听听,如果有一个setInterval的问题,时间设置为0毫秒?会有任何性能问题吗?如果有的话会更好吗? 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);
提前致谢!
答案 0 :(得分:1)
如果将时间设置为0毫秒的setInterval出现问题?
您无法将 0 设置为时间间隔,因为浏览器会将其忽略。
是否会出现任何性能问题?如果有的话会更好吗? 1000毫秒?
当然,如果可能的话,1000毫秒优于10(非零) 每隔10毫秒做一件事比花费1000毫秒只做一件事要花费更多。
答案 1 :(得分:1)
Javascript不是多线程的,它只是通过延迟执行来模拟它。当计时器达到超时间隔时,它将暂停所有其他执行并运行您告诉它的代码。因此,您可能需要注意间隔时间有多短。如果你不小心的话,它可能会淹没你的浏览器。