【问题标题】:RxJs Observable not calling complete methodRxJs Observable 不调用完整方法
【发布时间】:2023-01-10 06:38:54
【问题描述】:

在 subscribe(或 finalize 管道)中使用带有 complete 的 Angular 的 http 客户端,代码永远不会执行。

简单示例:

this.http.get(myUrl).subscribe({
    next: results => handleSuccess(results),
    error: err => handleError(err),
    complete: () => handleAllRequests()

handleAllRequests() 函数永远不会被调用。在每个其他答案的订阅之后添加 finalize 管道或额外的 .add() 不起作用。

类似问题: Angular 6 / Rxjs - how to basics: observables success, error, finally

【问题讨论】:

    标签: angular rxjs observable


    【解决方案1】:

    经过一番挖掘,我发现答案很简单但并不明显(至少对我而言)。

    归结为了解可观察对象何时“完成”。只要订阅存在(未取消订阅或未调用 observer.complete()),就不会调用完整代码和最终管道。

    因此,您必须“完成”订阅。对于 Angular http 客户端,我选择使用take(1),它会在执行一次后完成订阅。我经常将这种模式用于 http 请求,因为它通常是发出一次请求的目标。

    我希望这有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 2017-06-14
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多