【发布时间】:2020-01-03 12:25:34
【问题描述】:
我正在处理调用异步函数的代码。在这种情况下,run 方法对返回字符串的方法执行await 调用。如何转换 run 方法以再次返回一个承诺?
我搜索了互联网,但找不到解决方案。我是 Typescript 和异步编程的新手。
我还想问:await 关键字是否“转换”了字符串中返回的承诺?结果是一个字符串,但为什么我不必用.then() 解包来获取字符串呢?如果结果是一个承诺,我可以在run 方法中返回它,但run 必须返回一个承诺。
public async run(): Promise<IMyType> {
log.info("Running item1 ...");
let result: IMyType = {
name: "name1",
outcome: undefined,
message: "",
various: {}
};
result = await this.runCheck(result);
if (result.outcome) {
result.message = this.successMessage;
} else {
result.message = this.failMessage;
}
return result;
}
private async runCheck(
result: IMyType
): Promise<IMyTypet>
【问题讨论】:
-
async / await 是语法糖,有助于以看似同步的方式处理 Promise(意思是:代码看起来是同步的,尽管它仍然是基于 Promise 的)。异步函数将总是返回一个承诺。