取消订阅后如何忽略/处理待处理的Angular HTTP请求的响应?

时间:2018-02-02 11:04:07

标签: angular http observable unsubscribe

我使用Angular 5 HttpClient将请求发送到服务器并将响应存储在数据存储区服务中。

在我们的场景中,可以使用不同的API,它们使用相同类型的数据进行响应。当用户选择从另一个API加载数据时: 1.请求取消订阅使用takeUntil, 2.数据存储区被清空, 3.获取新API的数据。

然而,取消订阅时尚待处理的请求继续提出回复。结果,来自前者和后者API的数据最终都在数据存储中......不幸。

是否可以从未列出的待处理请求中得到什么?这就像把球扔到头顶上一旦被抛出,就没有办法让它停在半空中?

如果是这种情况,在这种情况下通常使用什么方法来忽略这些不需要的响应?

1 个答案:

答案 0 :(得分:1)

不,这不是取消订阅的预期行为。实际上,如果您取消订阅,请求不应再传递给您的回调(当然,由于http协议,实际请求无法取消) 对我来说,听起来好像你的代码中的其他地方有另一个问题/错误,造成这种情况。

检查一下,这正是你需要的,所以它应该工作;)

https://angular-2-training-book.rangle.io/handout/http/catching-rejections/cancel_request.html