Я делаю несколько тестов с обещаниями и написал код, который ведет себя не совсем так, как я ожидал:
function function1() {
return new Promise((resolve, reject) => {
let i = 5000000000;
while (i > 0) {
i--;
}
resolve("print function1!!!");
});
}
function function2() {
console.log("print function2!!!");
}
function function3() {
function1().then(data => console.log(data));
function2();
}
function3();
выполнение этого кода ожидает завершения цикла в функции1и затем напечатайте:
print function2 !!!
print function1 !!!
Я ожидал, что код напечатает «print function2!»!!»затем дождитесь завершения цикла и напечатайте «print function1 !!!».
Почему цикл внутри обещания блокирует выполнение кода?