Output every second
الأهمية: 5
Write a function printNumbers(from, to)
that outputs a number every second, starting from from
and ending with to
.
Make two variants of the solution.
- Using
setInterval
. - Using nested
setTimeout
.
Using 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);
Using nested 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);
Note that in both solutions, there is an initial delay before the first output. The function is called after 1000ms
the first time.
If we also want the function to run immediately, then we can add an additional call on a separate line, like this:
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);