en.javascript.info/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/solution.md
Ilya Kantor 427fbea180 minor
2019-09-02 21:58:57 +03:00

64 lines
1 KiB
Markdown

Using `setInterval`:
```js run
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`:
```js run
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:
```js run
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);
```