Вот почему вы видите разницу.

я есть вопрос к 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, но я думаю, это просто для симуляции перерыва.

Заранее благодарны за Вашу помощь.

Лучшие приветствия Паскаля

Ответы на вопрос(2)

Ваш ответ на вопрос