我使用Angular 5 HttpClient将请求发送到服务器并将响应存储在数据存储区服务中。
在我们的场景中,可以使用不同的API,它们使用相同类型的数据进行响应。当用户选择从另一个API加载数据时: 1.请求取消订阅使用takeUntil, 2.数据存储区被清空, 3.获取新API的数据。
然而,取消订阅时尚待处理的请求继续提出回复。结果,来自前者和后者API的数据最终都在数据存储中......不幸。
是否可以从未列出的待处理请求中得到什么?这就像把球扔到头顶上一旦被抛出,就没有办法让它停在半空中?
如果是这种情况,在这种情况下通常使用什么方法来忽略这些不需要的响应?
答案 0 :(得分:1)
不,这不是取消订阅的预期行为。实际上,如果您取消订阅,请求不应再传递给您的回调(当然,由于http协议,实际请求无法取消) 对我来说,听起来好像你的代码中的其他地方有另一个问题/错误,造成这种情况。
检查一下,这正是你需要的,所以它应该工作;)
https://angular-2-training-book.rangle.io/handout/http/catching-rejections/cancel_request.html