每秒输出一个数字
重要性: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);
}
// usage:
printNumbers(5, 10);
使用嵌套的 setTimeout
function printNumbers(from, to) {
let current = from;
setTimeout(function go() {
alert(current);
if (current < to) {
setTimeout(go, 1000);
}
current++;
}, 1000);
}
// usage:
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);