【发布时间】:2016-06-18 16:06:02
【问题描述】:
我有一个应用程序正在发送一个 http 请求,该请求在用户每次输入时都会返回一个承诺。我让它每 500 毫秒去抖动一次。有时我请求的 api 需要很长时间才能响应。例如,我对a 发出搜索请求,需要很长时间才能响应,但随后用户继续键入以完成a+x 的查询,该查询几乎立即解决,但a+x 的结果被先前的请求覆盖只是a。
TL;DR:如果在当前解决之前调用了新的承诺,如何取消当前
【问题讨论】:
-
代码值 1024 字。发布minimal reproducible example。
-
我正在使用vue-resource,所以我试图让这个问题尽可能与库/框架无关,以帮助其他人。
-
“几乎立即解决,但
a+x的结果被之前的请求仅a覆盖” 为什么结果会被覆盖? -
结果被覆盖,因为我当前使用的是全局状态变量,当请求解决时它被设置为响应。
-
您将需要使用可取消的承诺。您使用哪个库来发出 HTTP 请求?
标签: javascript http promise