我有一个情况,需要在异步方法的结果上调用另一个异步方法。
class Parent {
constructor(private child: Child) { }
private getChild(): Promise<Child> {
return Promise.resolve(this.child);
}
async getResult(): Promise<Child> {
return await this.getChild()
}
}
class Child {
getText(): Promise<string> {
return Promise.resolve('text');
}
}
let child = new Child();
let container = new Parent(child);
let printText = async () => {
await (await container.getResult()).getText();
}
printText();
有没有什么好的方法可以避免需要双重等待?我想只需执行
await container.getChild().getText();
即可。在 TypeScript 中,如何制作一种 API,使我能够链接返回承诺的方法,然后使用单个 await 等待结果?编辑:为了澄清,这更多是一个 API 设计问题。有没有更好的模式来做我试图做的事情(调用由异步方法返回的对象上的异步方法)?即使这意味着完全不同的事情?
await
的情况下链接多个Promise,请使用.then
。 - 4castleawait
替换为return
,这可能会达到你想要的效果。 - Patrick Robertsawait
?如果你在使用 Promises ,那么你也必须要使用then
两次。你可以写成const result = await container.getResult(); await result.getText();
。 - user663031return
替换外部的await
:-) - BergigetChild
返回一个Promise时,await container.getChild().getText();
语法是不可能的,因为Promise没有getText
方法。故此无可厚非。 - Bergi