每秒输出一次
重要程度: 5
编写一个函数 printNumbers(from, to)
,使其每秒输出一个数字,数字从 from
开始,到 to
结束。
使用以下两种方法来实现。
- 使用
setInterval
。 - 使用嵌套的
setTimeout
。
使用 setInterval
:
function printNumbers(from, to) {
let current = from;
let timerId = setInterval(function() {
alert(current);
if (current == to) {
clearInterval(timerId);
}
current++;
}, 1000);
}
// 用例:
printNumbers(5, 10);
使用嵌套的 setTimeout
:
function printNumbers(from, to) {
let current = from;
setTimeout(function go() {
alert(current);
if (current < to) {
setTimeout(go, 1000);
}
current++;
}, 1000);
}
// 用例:
printNumbers(5, 10);
请注意,在这两种解决方案中,在第一个输出之前都有一个初始延迟。函数在 1000ms
之后才被第一次调用。
如果我们还希望函数立即运行,那么我们可以在单独的一行上添加一个额外的调用,像这样:
function printNumbers(from, to) {
let current = from;
function go() {
alert(current);
if (current == to) {
clearInterval(timerId);
}
current++;
}
go();
let timerId = setInterval(go, 1000);
}
printNumbers(5, 10);