我正在使用一个带有使用诺言的函数的类(为简单起见,我正在使用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()
的方法?
感谢您的答复!
答案 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...");
}