【问题标题】:Angular HTTP response out of order角度 HTTP 响应乱序
【发布时间】:2020-05-21 10:51:17
【问题描述】:

我们在 Angular 6 中使用 HTTP 客户端来获取一页数据。当多个请求发送得太快时,例如用户输入过滤字符,页面请求会继续快速发送。结果回来很容易出问题。假设 HTTP 客户端调用了 3 次,最终返回的结果可能是第 1 次服务请求。

如何解决这个问题?提前致谢。

【问题讨论】:

  • 你试过rxjs告发吗?
  • 在发送下一个请求之前向服务器发送一个 CancelationRequestToken。
  • 这不是 http 问题。而是发送请求的方式。所有请求都是异步的,这意味着同时请求没有顺序保证。使用 RxJS 间隔或去抖动来找到完美的时机。从 200 毫秒开始,然后减少,直到问题再次发生

标签: angular angular6


【解决方案1】:

您可以使用 switchMap 来获得取消效果。一个类似的问题和答案是:here

如果您是 rxjs 新手,那么这里是顶级步骤:

1)创建服务并创建一个请求主题:request$ = new Subject();

2) 每当您要发出 hhtp 请求时,只需将数据发布到上述主题即可。

3) 在同一个服务类中,创建一个返回 observable 的方法:

getServiceData():Observable { return request$.pipe(switchMap(() => this.callActualService()); }

4) 从 Controller 订阅这个 Observable。

【讨论】:

    猜你喜欢
    • 2018-08-28
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多