JavaScript异步结果过期问题的四种处理方案
问题现象
搜索框边输入边联想,是最容易暴露异步竞态的场景。用户快速敲下 “java” 到 “javascript”,浏览器会依次发出多个请求,但网络不保证按发出顺序返回。于是可能出现这样的结果:
- 先发的 “java” 请求反而后到,把后发的 “javascript” 结果覆盖掉;
- 界面上显示的联想词与输入框当前的文字对不上;
- 偶尔还会出现结果闪一下又被刷掉的"抖动"。
开发者通常会用一个外部变量手工比对来绕过:
letcurrentQuery="";asyncfunctionsearch(query){ <