Запустите вызов функции async / await из класса как однострочный - PullRequest
1 голос
/ 03 мая 2019

У меня есть класс с функцией, которая использует обещание (для простоты я использую console.log()):

class Foo {

    constructor() { }

    async func(s) {
        try {
            await console.log(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.log("2. Promise")
})


console.log("3. Later...");

Однако я получаю:

1. Before Promise
3. Later...
2. Promise

Я хотел бы выполнить func() и только затем запустить следующийconsole.log().

Я знаю, что могу использовать .then() и завернуть в него console.log("3. Later...");.Это очень сбивает с толку, если у меня много кода, который я хотел бы выполнить после этого.

Есть ли другой способ выполнить func() без использования then()?

Я ценюваши ответы!

1 Ответ

3 голосов
/ 03 мая 2019

используйте верхний уровень await (не настоящий, так как он все еще WD )


async function main(){
    const {
        Foo
    } = require('./t22_1-async-await-class')
    let foo = new Foo()

    await foo.func("1. Before Promise")
    console.log("2. Promise")
    console.log("3. Later...");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...