Эта строка кода объявляет функцию async
и выполняет ее:
(async() => await test())();
Пока ничего не ждет его результат, и выполнение переходит к console.log("check3")
.
You придется явно его ждать:
await (async () => await test())();
Теперь это пока не сработает, потому что функция верхнего уровня не async
. Всякий раз, когда вам нужно вызвать await
, вы должны убедиться, что он вызывается внутри функции async
. Один из способов сделать это - заключить все в другую async
функцию:
(async () => {
console.log("check1");
const resolveInTwoSeconds = () => {
return new Promise((resolve) => {
setTimeout(() => resolve("check2"), 2000);
})
};
async function test() {
const asyncFunctions = [
resolveInTwoSeconds()
];
const results = await Promise.all(asyncFunctions);
console.log(results);
}
await (async ()=> await test())();
console.log("check3");
})()
В противном случае переведите check3
в уже существующую функцию async
, как предлагали другие.