如何使 setTimeout 调用 setInterval 使其在一段时间后执行?
How to make a setTimeout to call a setInterval to make it execute after some time?
我希望我的 doSomething
在与 setInterval
的 interval
不同的一段时间后执行,所以我使用了 setTimeout(doSomething, 5000);
这样我就可以调用 doSomething
说 5 秒后,但这似乎没有发生。
关于setInterval
需要用clearInterval
在我声明的条件下停止执行,[=13=需要interval
时间] 与doSomething
开始执行的延迟不同,如何让doSomething
在5秒后开始执行?
function doSomething() {
let a = 1;
return setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
return a = 1;
clearInterval(id);
}
}, 1000);
}
var id = doSomething();
setTimeout(doSomething, 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);
var id = doSomething();
立即调用函数(并因此开始间隔)。
由于 setInterval()
和 clearInterval()
都在同一个函数中,因此不需要 return 间隔 ID。只需在函数中本地跟踪它。这样你只需要调用 doSomething()
它就会自己启动和停止。
最后,注意setInterval()
的第一次调用不会立即执行,还要等待给定的延迟。因此,如果您希望第一次调用在 5 秒之后,您需要从 setTimeout()
的 5000
中减去 setInterval()
的 1000
。 (或者立即手动调用重复函数。)
function doSomething() {
let a = 1;
let intervalId = setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
clearInterval(intervalId);
}
}, 1000);
}
setTimeout(doSomething, 4000);
setTimeout 运行 doSomething
延迟约4s
doSomething
执行第一个 console.log 约 1 秒延迟
所以第一个console.log在4s + 1s == 5s delay
之后开始
function doSomething() {
let a = 1
, id = setInterval(() => {
console.log(a++);
if (a > 5) clearInterval(id);
}, 1000);
}
setTimeout( doSomething, 4000);
首先。如果调用创建间隔的函数,它将创建一个间隔。如果您不使用超时,则不能调用该函数并期望它有超时。
这个有效:
function foo() {
var i = 0;
var iId = setInterval(() => {
console.log('Hello World -' + i);
i++;
if (i > 5) {
clearInterval(iId);
}
}, 1000);
}
然后:
setTimeout(() => { foo(); }, 5000)
我希望我的 doSomething
在与 setInterval
的 interval
不同的一段时间后执行,所以我使用了 setTimeout(doSomething, 5000);
这样我就可以调用 doSomething
说 5 秒后,但这似乎没有发生。
关于setInterval
需要用clearInterval
在我声明的条件下停止执行,[=13=需要interval
时间] 与doSomething
开始执行的延迟不同,如何让doSomething
在5秒后开始执行?
function doSomething() {
let a = 1;
return setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
return a = 1;
clearInterval(id);
}
}, 1000);
}
var id = doSomething();
setTimeout(doSomething, 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);
var id = doSomething();
立即调用函数(并因此开始间隔)。
由于 setInterval()
和 clearInterval()
都在同一个函数中,因此不需要 return 间隔 ID。只需在函数中本地跟踪它。这样你只需要调用 doSomething()
它就会自己启动和停止。
最后,注意setInterval()
的第一次调用不会立即执行,还要等待给定的延迟。因此,如果您希望第一次调用在 5 秒之后,您需要从 setTimeout()
的 5000
中减去 setInterval()
的 1000
。 (或者立即手动调用重复函数。)
function doSomething() {
let a = 1;
let intervalId = setInterval(() => {
console.log(a);
if (a < 6) {
a++;
} else {
clearInterval(intervalId);
}
}, 1000);
}
setTimeout(doSomething, 4000);
setTimeout 运行 doSomething
延迟约4s
doSomething
执行第一个 console.log 约 1 秒延迟
所以第一个console.log在4s + 1s == 5s delay
function doSomething() {
let a = 1
, id = setInterval(() => {
console.log(a++);
if (a > 5) clearInterval(id);
}, 1000);
}
setTimeout( doSomething, 4000);
首先。如果调用创建间隔的函数,它将创建一个间隔。如果您不使用超时,则不能调用该函数并期望它有超时。
这个有效:
function foo() {
var i = 0;
var iId = setInterval(() => {
console.log('Hello World -' + i);
i++;
if (i > 5) {
clearInterval(iId);
}
}, 1000);
}
然后:
setTimeout(() => { foo(); }, 5000)