У меня есть класс с функцией, использующей обещание (для простоты я использую console.info()):
class Foo {
constructor() { }
async func(s) {
try {
await console.info(s)
} catch (e) {
console.error(e.message);
}
}
}
module.exports = { Foo };
Когда я вызываю функцию в моем файле main.js, я хочу дождаться завершения обещания, а затем выполнить следующий шаг:
const {
Foo
} = require('./t22_1-async-await-class')
let foo = new Foo()
foo.func("1. Before Promise").then(() => {
console.info("2. Promise")
})
console.info("3. Later...");
Однако я получаю:
1. Before Promise
3. Later...
2. Promise
Я хотел бы выполнить func() и только потом запустить следующий console.info().
Я знаю, что мог бы использовать .then() и завернуть в него console.info("3. Later...");. Это становится очень запутанным, если у меня есть много кода, который я хотел бы выполнить после этого.
Есть ли другой способ выполнить func() без использования then()?
Я ценю ваши ответы!
Is there anther way to execute func() without using a then()? нет



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


используйте ожидание верхнего уровня (не настоящее, так как оно все еще ВД)
async function main(){
const {
Foo
} = require('./t22_1-async-await-class')
let foo = new Foo()
await foo.func("1. Before Promise")
console.info("2. Promise")
console.info("3. Later...");
}
вот как работает обещание. async/await не меняйте его