let i = 0;
let start = Date.now();
function count() {
// делаем часть тяжёлой работы (*)
do {
i++;
} while (i % 1e6 != 0);
if (i == 1e9) {
alert("Done in " + (Date.now() - start) + 'ms');
} else {
setTimeout(count); // планируем новый вызов (**)
}
}
count();
Правильно понимаю?
Вначале идет вызов функции, затем начинается выполняться этот код
do {
i++;
} while (i % 1e6 != 0);
и выполняется он до тех пор, пока истинно условие.
Как только условие ложно, то выполнение переходит на
if (i == 1e9) {
alert("Done in " + (Date.now() - start) + 'ms');
} else {
setTimeout(count); // планируем новый вызов (**)
}
А тут, если i = 1e9 происходит то, что внутри первых скобок, иначе вызов СетТаймаут.
Так? Не понимаю логику. На learn.js они не объясняют, как работают их программы.
Помогите понять, пожалуйста.