【问题标题】:await on a function that return an Observable在返回 Observable 的函数上等待
【发布时间】:2019-07-24 23:26:36
【问题描述】:

我的 Typescript 代码中有以下错误,但我不明白为什么我没有收到任何编译时或运行时错误。

this.getApiClient().getStuffFromTheApi()

getStuffFromTheApi 返回一个Observable<Stuff[]>。 现在,当我在没有toPromise() 的情况下使用此方法调用await 时,什么也没有发生。 为什么编译器无法检查这一点,为什么没有运行时错误?如何让代码更安全更容易找到此类错误?

编辑: 声明是 getStuffFromTheApi(): 可观察的 {....}

【问题讨论】:

  • 你能说明这个方法是如何声明的吗?
  • 我在想也许有一个 ts 规则你可以使用“没有承诺就不要等待”,但我不确定(看看链接是否有效)我知道相反的做法是行不通的“没有承诺无需等待”,因为人们一直都在这样做。是否存在人们等待非承诺的情况?见palantir.github.io/tslint/rules/await-promise

标签: typescript async-await rxjs


【解决方案1】:

以下代码等待 Observable 响应完成:

let response: Observable<any> = ...;
await response;

以下代码等待响应并给出序列的第一个值:

let response: Observable<any> = ...;
await response.toPromise();

方法 getStuffFromTheApi() 可以返回一个 Observable,它提供值并且永远不会完成。

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 2016-09-15
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    相关资源
    最近更新 更多