【问题标题】:RXJS call with takeUntil(OnDestroy) returns cancelled from the post API带有 takeUntil(OnDestroy) 的 RXJS 调用从 post API 返回取消
【发布时间】:2021-07-30 18:05:43
【问题描述】:

我添加了下面的 rxjs,第一个调用是一个帖子。添加 takeUntil(OnDestroy) 后,post API 会返回如下所示的取消选项

[3

如果删除了 takeuntil 行,则帖子返回成功状态 - 204。 为什么会出现这个问题?

【问题讨论】:

  • takeUntil 应该是 pipe 链中的最后一项,this.onDestroy 也应该是 Subject,例如:onDestroy = new Subject();
  • OnDestroy 是什么?课程 ?你接下来要去哪里?
  • @robert 我尝试在最后一个 switchMap 或 map 之后的管道中添加 takeUntil ,但我仍然得到同样的错误
  • @Stavm 是的,它是一个主题并且在 ngOnDestroy ngOnDestroy() { this.onDestroy.next() 中取消订阅; this.onDestroy.complete(); }

标签: angular rxjs rxjs-pipeable-operators


【解决方案1】:

我可以向您推荐此代码以申请退订:

@Component(...)
export class MyComponent implements OnDestroy {
  private unsubscribe: Subject; // boilerplate
  constructor(private heroService: MyApiService) {}
  public ngOnInit(): void {
    this.subscription = this.heroService
      .callSomeServerApi()
      .pipe(takeUntil(this.unsubscribe)) // boilerplate
      .subscribe(() => window.location = 'https://another.site`)
  }
  public ngOnDestroy(): void {
    this.unsubscribe.next(); // boilerplate
    this.unsubscribe.complete(); // boilerplate
  }
}

【讨论】:

  • 感谢@Rebai Ahmed 的回复,但我尝试了相同的 callSomeServerApi 来创建一个发布 API,在该 API 中我得到了状态中的取消响应。也使用相同的样板。
  • 所以对你没有帮助?
  • 不,正如我提到的,我得到了取消的回复
  • 取消回复是什么意思?你没有得到结果吗?
  • 获得与原始问题相同的回复(见屏幕截图)。在 chrome 开发者工具中。我没有得到结果。状态响应被取消而不是 204 或 500
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2018-11-09
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多