每秒輸出
重要性: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);