如何在Angular 6中调用新的Http请求之前取消所有未决的Http请求

时间:2019-06-13 07:38:57

标签: angular request abort

我正在一个按顺序调用API并将其响应存储在单个全局变量中的角度项目中。

我的API流程如下所示: enter image description here

说明:

  1. 用户单击“第一个请求”按钮,然后将第一个请求发送到服务器。
  2. 在用html显示第一个请求的数据之前,用户单击另一个按钮并发出第二个API请求。
  3. 此处第一个请求的响应尚未由服务器返回,并发出另一个请求。
  4. 在那之后,第二个请求的响应首先发生。
  5. 然后出现第一个请求的结果。
  6. 那时,所有结果将合并。但是预期的输出是这样的:
  7. 取消第一个请求,仅显示第二个请求的结果。

有什么办法可以先取消所有待处理的请求,然后再发出另一个请求。 请帮助我。

1 个答案:

答案 0 :(得分:0)

您可以通过以下任意一种方式来处理此问题:

a)更好的方法是使用带有重叠的微调器,因为您必须使用户知道他已经触发了请求并正在等待响应

b)借助Observables,您可以使用“ SwitchMap”取消待处理的订阅,请参阅: SwitchMap

c)在拦截器内部,将所有传入请求存储为键-值对,如果再次出现具有相同密钥的请求,只需拒绝它,但这将取消后续的类似请求。

干杯(y)