【发布时间】:2020-10-26 07:16:49
【问题描述】:
所以,我有这个输入框,当您在其中输入内容时,它会对我们的后端进行 API 调用,我遇到的问题是:
假设我们正在输入测试,我将对此进行 4 次调用:
- t
- 特
- tes
- 测试
因为 't' 的调用比 'test' 需要更长的时间,所以来自 't' 的数据将在最后加载。这意味着我没有从“测试”获得请求的数据。
我的问题是,有什么方法可以取消之前的请求? ('t', 'te', 'tes') 并且只让你的最后一个电话打通?或者这只是优化 API 速度的性能?
我已经尝试过半秒超时,但有时问题仍然存在。
【问题讨论】:
-
你已经标记了这个axios,那么你有没有在 Axios 中查看如何取消请求?
-
如前所述,它被称为“去抖动”。基本上,您为每次更改设置了一个超时(假设为 500 毫秒),并且在此超时结束时,您正在检查值是否未更改,然后才通过 API 请求。在线阅读更多内容,我确信 react 内置了一些 dobounce 机制。
-
@vladkatz 不是,我会尽快添加答案
-
@HMR 同意他请求的不是去抖动,但他请求的行为是去抖动可以带来更好的性能和更少的 API 调用
-
@vladkatz 查看答案,去抖动不会始终解决根据用户输入发出异步请求:
the order the async results resolve may not be the order the user gave the inputs
标签: javascript reactjs api axios