Javascript 如何使setTimeout调用setInterval使其在一段时间后执行?
我希望我的Javascript 如何使setTimeout调用setInterval使其在一段时间后执行?,javascript,function,setinterval,delay,clearinterval,Javascript,Function,Setinterval,Delay,Clearinterval,我希望我的doSomething在与setInterval的interval不同的时间后执行,因此我使用了setTimeout(doSomething,5000)这样我可以在5秒后调用doSomething,但这似乎没有发生 关于我需要使用clearInterval使setInterval在我声明的条件下停止执行,并且我需要有interval时间使setInterval与doSomething执行开始的延迟不同,如何使doSomething在5秒后开始执行 函数doSomething(){ 设
doSomething
在与setInterval
的interval
不同的时间后执行,因此我使用了setTimeout(doSomething,5000)
这样我可以在5秒后调用doSomething
,但这似乎没有发生
关于我需要使用clearInterval
使setInterval
在我声明的条件下停止执行,并且我需要有interval
时间使setInterval
与doSomething
执行开始的延迟不同,如何使doSomething
在5秒后开始执行
函数doSomething(){
设a=1;
返回设置间隔(()=>{
控制台日志(a);
if(a<6){
a++;
}否则{
返回a=1;
清除间隔(id);
}
}, 1000);
}
var id=剂量测定法();
设置超时(剂量计,5000)代码>试着这样做
function doSomething() {
let a = 1;
return setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
clearInterval(id)
return a = 1;
}
}, 1000);
}
var id = doSomething();
setTimeout(doSomething, 5000);
函数doSomething(){
设a=1;
返回设置间隔(()=>{
控制台日志(a);
if(a<6){
a++;
}否则{
清除间隔(id)
返回a=1;
}
}, 1000);
}
var id=剂量测定法();
设置超时(剂量计,5000);
var id=doSomething()
立即调用函数(从而启动间隔)。
由于setInterval()
和clearInterval()
都在同一个函数中,因此不需要返回间隔ID。只需在函数中本地跟踪它即可。这样,您只需调用doSomething()
,它就会自动启动和停止
最后,请注意,setInterval()
的第一次调用不会立即执行,而是等待给定的延迟。因此,如果希望第一次调用在5秒之后,则需要从setTimeout()的5000
中减去setInterval()的1000
。(或者立即手动调用重复函数。)
函数doSomething(){
设a=1;
让intervalId=setInterval(()=>{
控制台日志(a);
if(a<6){
a++;
}否则{
clearInterval(intervalId);
}
}, 1000);
}
设置超时(剂量测量,4000)代码>设置超时运行doSomething
关于4s延迟
和doSomething
执行第一个console.log约1s延迟
因此,第一个console.log在4s+1s==5s延迟后启动
函数doSomething(){
设a=1
,id=setInterval(()=>{
console.log(a++);
如果(a>5)清除间隔(id);
}, 1000);
}
设置超时(剂量测量,4000)代码>首先。如果调用创建间隔的函数,它将创建一个间隔。如果不使用超时,则不能调用函数并期望它有一个超时
这项工作:
function foo() {
var i = 0;
var iId = setInterval(() => {
console.log('Hello World -' + i);
i++;
if (i > 5) {
clearInterval(iId);
}
}, 1000);
}
然后:
结果没有差别!谢谢你解决我的问题,并特别与我分享你的知识!我这里有一个小问题,我如何在else条件中设置a=1
?@christy就是这样,但它不会有任何效果。a
变量的作用域在doSomething()
函数中。当函数完成且间隔被清除时,它实际上不再存在。无法访问它,最终将被收集。学会了一些新的东西,祝福你!:)
setTimeout(() => { foo(); }, 5000)