我有一个文本输入,该输入的值是唯一的,以确保每次输入更改其值时,我都会调用API,立即向用户反馈输入是否有效。
这个方法有两个问题:
1-内部API调用过多。
2-当用户输入得足够快时,可能会出现响应不正常的情况。
例如:如果键入";foo bar";将有7个请求检查:"f"fo"foo"foo"foo b"foo-ba"foo bar";按照这个顺序。比方说如果";foo-ba";是有效的,但是";foo bar";不是。如果打字相对较慢,那也没问题,但如果打字足够快;foo-ba";最后返回,这意味着该状态将是"0";有效的";当它不是时
可能的解决方案是,任何api调用都会取消所有先前正在进行的调用。
我认为你的直觉是,对每个错误的字符进行调用是正确的。你真的应该在帖子中验证这个条目是唯一的,如果不是,就告诉用户。如果你想要更多的实时反馈,你可以在页面加载时从数据库中发送所有当前条目,并在前端循环(仍然不是一个好的解决方案(
如果你已经接受了你的想法,你可以如下解决:
为每个呼叫生成一个唯一的id,并将其包含在您的请求中
当您进行调用时,将该id保存到一个变量中,类似于lastCall。您拨打的每个电话都会更新上次通话的id。然后,当你开始得到响应时,你只需要对包含与lastCall中相同id的响应做出反应。
同样,我建议您更改方法,但此解决方案将有助于解决呼叫不同步的问题。不过,你仍然会在后台发送垃圾邮件。