据我所知,这两个javascript的行为方式相同:
选项A:
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
Run Code Online (Sandbox Code Playgroud)
选项B:
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
Run Code Online (Sandbox Code Playgroud)
使用setTimeout和setInterval有什么区别吗?
使用setTimeout()它可以在指定的时间启动一个功能:
setTimeout(function, 60000);
Run Code Online (Sandbox Code Playgroud)
但是,如果我想多次启动该功能怎么办?每次时间间隔过去,我都想执行该功能(每60秒,让我们说).
是否可以限制setInterval在javascript中触发的次数?
我正在显示一个关于给定的终结时间的倒计时表.
虽然它的工作完美,但我想知道哪种方法最适用.
下面是我的倒计时功能.
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想要的是每1秒后自动调用一个函数(倒计时),如果它在1秒内没有执行/完成,则取消当前的ajax并启动一个新的ajax调用.
现在我发现有4种工作方法
window.setInterval(countdown, 1000);
Run Code Online (Sandbox Code Playgroud)
setInterval(function() {countdown()}, 1000);
Run Code Online (Sandbox Code Playgroud)
var countdown = function() {
$.ajax({ //ajax code });
timerId = setTimeout(countdown, 5000); // …Run Code Online (Sandbox Code Playgroud) X下一次执行之间的ms.mouseover(#slider)暂停延迟 - 如果延迟= 1000毫秒,并且已经过了300毫秒,mouseout(#slider)将触发恢复倒计时剩余的700毫秒延迟.这是一个直观的解释:
var = s Array(1,2,3)
var x = s[1]; //get first element
console.log(x); //do something to it
wait(); //START wait timer 1000ms
//------------> timer : 300ms
//------------> user : mouseover (#slider) : pause timer
//------------> user : waited 5000ms
//------------> user : mouseout (#slider) : resume timer
//------------> timer : 300ms --> still 700ms to go!
//------------> timer : 500ms
//------------> user : mouseover (#slider) …Run Code Online (Sandbox Code Playgroud)