取消随后的axios API调用,保留最后一个

cuxqih21  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(152)

我有一个文本输入,它的值大多是唯一的,为了确保这一点,我在每次输入改变它的值时都调用一个API,立即向用户反馈输入是否有效。
这种方法有两个问题:
1-太多非必需的API调用。
2-当用户输入的速度足够快时,就有可能出现响应无序的情况。
举例来说:如果输入“foo bar”,将有7个请求检查:“f”,“fo”,“foo”,“foo“,“foo B”,“foo ba”,“foo bar”按这个顺序。假设“foo ba”有效,但“foo bar”无效。如果打字相对较慢,那就没问题,但如果打字足够快,“foo ba”的响应可能会最后返回,这意味着状态将是“有效的”,
可能的解决方案是任何API调用都会取消所有正在进行的previus调用。

r6hnlfcb

r6hnlfcb1#

我认为你的直觉,做一个调用的每一个字符是错误的是正确的。你真的应该要么验证后,该条目是唯一的,如果不告诉用户。如果你想要更多的实时反馈,你可以发送所有当前条目从您的数据库一次页面加载,并通过在前端循环(仍然不是一个伟大的解决方案)
如果你和你的想法结婚了,你可以按如下方式解决它:
为每个呼叫生成一个唯一的ID,并将其包含在请求中。
当你进行调用时,保存那个id到一个变量,比如lastCall。你进行的每一次调用都会更新上次调用的id。然后,当你开始得到响应时,你只需要对包含lastCall中相同id的响应做出React。
再次,我建议你改变你的方法,但这个解决方案将有助于解决调用不同步的问题。

相关问题