Javascript 如何在每次运行后使2个功能循环n次并延时?
我有两对函数。这些功能需要运行9次,持续3秒(时间长度)。每次运行之间的延迟应为1秒 有没有更好的方法来缩短loopIT()函数Javascript 如何在每次运行后使2个功能循环n次并延时?,javascript,Javascript,我有两对函数。这些功能需要运行9次,持续3秒(时间长度)。每次运行之间的延迟应为1秒 有没有更好的方法来缩短loopIT()函数 window.onload=函数(){ //获取将触发操作的按钮 var b=document.getElementById('trigger'); //并在此处而不是在HTML中设置onclick处理程序 b、 onclick=loopIT; 函数startIT(){ //关闭开关,打开灯。 } 函数stopIT(){ //打开开关,关灯。 } 函数loopIT(
window.onload=函数(){
//获取将触发操作的按钮
var b=document.getElementById('trigger');
//并在此处而不是在HTML中设置onclick处理程序
b、 onclick=loopIT;
函数startIT(){
//关闭开关,打开灯。
}
函数stopIT(){
//打开开关,关灯。
}
函数loopIT(){
//打开灯,等待3秒钟,关闭灯。#1
setTimeout(startIT,100);
setTimeout(stopIT,3100);
//打开灯,等待3秒钟,关闭灯。#2
setTimeout(startIT,4100);
setTimeout(stopIT,7100);
//打开灯,等待3秒钟,关闭灯。#3
设置超时(startIT,8100);
设置超时(停止,11100);
//打开灯,等待3秒钟,关闭灯。#4
设置超时(startIT,12100);
设置超时(停止,15100);
//打开灯,等待3秒钟,关闭灯。#4
设置超时(startIT,16100);
设置超时(stopIT,19100);
//打开灯,等待3秒钟,关闭灯。#5
设置超时(startIT,22100);
设置超时(停止,25100);
//打开灯,等待3秒钟,关闭灯
设置超时(startIT,26100);
设置超时(stopIT,29100);
//打开灯,等待3秒钟,关闭灯。#7
设置超时(startIT,30100);
设置超时(停止,33100);
//打开灯,等待3秒钟,关闭灯。#8
设置超时(startIT,34100);
setTimeout(stopIT,37100);
//打开灯,等待3秒钟,关闭灯。#9
}
}
您可以使用两个for循环
function loopIT() {
// goes from #1 to #4 (inclusive)
for (var i = 4000; i <= 16000; i += 4000) {
setTimeout(startIT, i + 100);
setTimeout(stopIT, i + 3100);
}
// goes from #5 to #9 (inclusive)
for (var j = 22000; j <= 34000; j += 4000) {
setTimeout(startIT, j + 100);
setTimeout(stopIT, j + 3100);
}
}
函数loopIT(){
//从#1到#4(包括在内)
对于(var i=4000;i您可以使用setInterval
,它将每N毫秒运行一次特定函数
您可以使用计数器在N次后停止
//计算我们打开灯的次数
var-cpt=0;
//马上把灯打开
lightsOn();
//每3秒钟打开一次灯
var intervalOn=设定间隔(lightsOn,3000);
函数lightsOn()
{
控制台日志(“灯亮”);
//1秒钟后关灯
设置超时(lightsOff,1000);
}
函数lightsOff()
{
控制台日志(“灯关闭”);
++cpt;
//如果我们已经关了9次灯,停止开灯。
如果(cpt==9)
{
间隔时间;
}
}
我建议使用一个do-while循环,它会一直运行到最后(在您的例子中大约是40秒)。您还可以添加一个迭代器,每个循环增加一次迭代器
function loopIt() {
let timeout = 100;
do {
setTimeout(startIt(), timeout);
timeout += 3000;
setTimeout(stopIt(), timeout);
timeout += 1000;
} while (timeout < 40000);
}
函数loopIt(){
设超时=100;
做{
setTimeout(startIt(),timeout);
超时+=3000;
setTimeout(stopIt(),timeout);
超时+=1000;
}而(超时<40000);
}
我的建议是:
var repeatedTimes = 0;
function loopIt(){
if(repeatedTimes < 9){
startIT();
setTimeout(stopIT, 3000);
setTimeout(loopIt, 4000);
}
repeatedTimes++;
}
setTimeout(loopIt, 100);
var repeatedTimes=0;
函数loopIt(){
如果(重复次数<9){
startIT();
设置超时(停止,3000);
setTimeout(loopIt,4000);
}
重复次数++;
}
setTimeout(loopIt,100);
希望它对(i=0;i<9;i++){setTimeout(startIT,(4000*i)+100);setTimeout(stopIT,(4000*i)+3100)}有帮助