特定の終了時刻に関してカウントダウン時計を表示しています。
完璧に機能していますが、どの方法を適用するのが最善かを知りたいです。
以下は私のカウントダウン機能です。
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: windowオブジェクトで 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()
かclearInterval()
?
参考文献