我正在显示关于给定结束时间的倒计时手表。
虽然它的工作完美,但我想知道哪个是最好的应用方法。
下面是我的倒计时功能。
var timerId;
var postData = {endDate : endDate, tz : tz};
var countdown = function()
{
$.ajax({
type : 'post',
async : false,
timeout : 1000,
url : './ajax_countdown.php',
data : $.param(postData),
dataType : 'json',
success : function (resp){
$('#currentTime').html(resp.remainingTime);
}
});
}
我想要的是该函数(倒计时)应该在每 1 秒后自动调用一次,如果它没有在 1 秒内执行/完成,则取消当前的 ajax 并开始一个新的 ajax 调用。
现在我发现有4种工作方法
方法 1:将setInterval() 与窗口对象一起使用
window.setInterval(countdown, 1000);
方法 2:独立使用setInterval()
setInterval(function() {countdown()}, 1000);
方法3:在函数内部使用setTimeOut调用其他函数来初始化主函数
var countdown = function() {
$.ajax({ //ajax code });
timerId = setTimeout(countdown, 5000); // assign to a variable
}
function clockStart() {
if (timerId) return
countdown();
}
clockStart(); // calling this function
方法4:使用匿名函数调用
var countdown = function() {
$.ajax({ //ajax code });
timerId = setTimeout(countdown, 5000);
}
(function(){
if (timerId) return;
countdown();
})();
请告诉我
- 每种方法的优缺点是什么,哪一种是最好/正确的方法?
- 我应该使用
clearTimeOut()
orclearInterval()
吗?
参考