从类运行异步/等待函数调用

时间:2019-05-03 12:38:43

标签: javascript async-await

我正在使用一个带有使用诺言的函数的类(为简单起见,我正在使用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 个答案:

答案 0 :(得分:3)

使用顶层等待(不是真正的,因为它仍然是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...");
}