【问题标题】:How to cancel old promises?如何取消旧的承诺?
【发布时间】:2017-09-21 09:35:15
【问题描述】:

我的 Ionic 3 应用程序的一个页面以承诺的形式进行网络调用并接收结果。但有些电话比其他电话需要更多时间。在某些情况下,在请求 B 之前发出的请求 A 可能需要比请求 B 更多的时间来响应。

例如,在文本查询搜索中,如果用户为后端触发了两个具有不同参数的后续请求,他可以在响应 A 之前收到响应 B。然后视图将显示第二个搜索结果,然后,在一些时间,第一个搜索结果,这不是预期的行为。我总是需要显示上次请求的数据。

我怎样才能取消承诺,以便我离开时显示最新数据?

【问题讨论】:

  • 使用 observables - 它们是可取消的,但不是 Promise。
  • 您可能想阅读this answer

标签: angular promise cancellation typescript2.1


【解决方案1】:

我处理多个请求的竞争条件的方式是在请求中添加时间戳作为查询参数或标头,然后在收到响应时再次检查。如果时间戳不是已处理的最新时间戳,则将其丢弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-23
    • 2017-10-09
    • 2018-12-10
    • 1970-01-01
    • 2018-10-23
    • 2016-02-04
    • 2017-11-23
    相关资源
    最近更新 更多