以下功能正在做一件事。 “无限重复每1秒。”
但是我希望此函数每x秒重复一次,持续1分钟。 1分钟后,它将永远停止。
var repeater;
function doWork() {
$('#more').load('exp1.php');
repeater = setTimeout(doWork, 1000);
}
doWork();
答案 0 :(得分:4)
一种方法是保持每次调用都递增的计数器,并仅在该计数器低于60时才调用递归setTimeout
:
let count = 0;
function doWork() {
$('#more').load('exp1.php');
count++;
if (count < 60) setTimeout(doWork, 1000);
}
doWork();
请注意,由于您不在任何地方使用repeater
,因此不需要clearTimeout
变量。
或者,使用setInterval
和clearInterval
:
const interval = setInterval(doWork, 1000);
setTimeout(() => clearInterval(interval), 59500);
doWork();
答案 1 :(得分:0)
我会将值作为乘数传递给setTimeout持续时间。假设该函数的生命周期超出了此持续时间,它将仅增加传入的值。
因此,您将1000乘以一个整数,该整数将在函数本身内部递增。从1开始到60。然后将指令包装在if语句中。如果增量整数的值小于60,请执行工作。
答案 2 :(得分:0)
只需尝试一下,
var count = 60;
function doWork() {
var interval = setInterval(function(){
$('#more').load('exp1.php');
count--;
if (count ==0) clearInterval(interval);
},1000);
}
doWork();