Вот почему вы видите разницу.
я есть вопрос к async, await и setTimeout (). Я думал, я использую асинхронные функции для медленных процессов. Поэтому я попробовал это с большой петлей. На моем компьютере требуется несколько секунд для запуска следующего кода:
function slowFunction() {
return new Promise(resolve => {
setTimeout(() => {
for (let i = 0; i < 4000000000; i++) {};
resolve('Ready at ' + new Date().toLocaleTimeString('de'));
}, 0);
});
};
console.log('Start: ' + new Date().toLocaleTimeString('de'));
(async () => {
console.log('Call slow function.');
console.log(await slowFunction());
})();
console.log('There is no need to wait for the slow function: ' + new Date().toLocaleTimeString('de'));
Выход:
Start: 16:39:20
Call slow function.
There is no need to wait for the slow function: 16:39:20
Ready at 16:39:23
А теперь вопрос: в чем отличие следующего кода:
function slowFunction() {
return new Promise(resolve => {
for (let i = 0; i < 4000000000; i++) {};
resolve('Ready at ' + new Date().toLocaleTimeString('de'));
});
};
console.log('Start: ' + new Date().toLocaleTimeString('de'));
(async () => {
console.log('Call slow function.');
console.log(await slowFunction());
})();
console.log('There is no need to wait for the slow function: ' + new Date().toLocaleTimeString('de'));
Выход:
Start: 16:39:20
Call slow function.
There is no need to wait for the slow function: 16:39:23
Ready at 16:39:23
По первому примеру это выглядит как асинхронный. Во втором примере функция ожидает окончания цикла.
Нужно ли использовать setTimeout, или в коде есть ошибка, или я ошибаюсь? В обоих случаях определение разрешения находится за большой петлей.
Большинство примеров async и await использовали setTimeout, но я думаю, это просто для симуляции перерыва.
Заранее благодарны за Вашу помощь.
Лучшие приветствия Паскаля