Typescript异步方法是否返回承诺?

时间:2018-06-23 15:00:04

标签: javascript typescript

我只是想了解Typescript中的Async / Await。

我正在像这样转换现有代码:

getImportanceTypes(): Promise<void> {
        return this.importanceTypeService.list()
            .then(items => {
                this.importanceTypes = items;
            });
}

收件人:

async getImportanceTypes(): Promise<void> {
     this.importanceTypes = await this.importanceTypeService.list()
}

问题是:这真的能兑现诺言吗?它必须成功,因为它可以成功编译,但是在我看来,我看到等待执行的代码暂停执行,直到完成,然后继续执行。

我问的原因是我对上述对象(不同类型的表)有大约10个类似的调用,我希望它们与Promise.all并行执行。

1 个答案:

答案 0 :(得分:2)

是的,async函数返回承诺。 (在JavaScript和TypeScript中都使用。)async / await是“仅”用于创建和使用Promise的语法糖(但是,非常有用糖)。

您声明返回类型的方法确实是正确的方法。 There's been some dissention on that point,但是。 :-)有些人认为,如果将该函数声明为async,则应该只可以指定其 resolution 类型,而不必明确提及promise。不过,目前您确实使用Promise<x>而不是x