之前在项目进入测试阶段的时候,测试部给发了一个bug,大致是在搜索的时候搜索出来的东西和实际的不符合。
于是我去翻代码,原来问题是搜索的时候每次键盘按下都会进行一次搜索,但是搜索时间是异步的,这就导致了上一次搜索还没结束下一次搜索就有开始了。代码的执行就想是一锅粥,乱成一团。搜索的结果自然是不可能准确的了。
事实上,异步代码一旦调用频繁后,要么回调满地图跑,要么这些代码不要求有先后,规律。我见过一些代码,所有的请求都用异步,有时候两三个方法同时请求一个方法的时候,就会出现变量赋值错误,代码执行混乱等问题。。。。话题扯远了,回到搜索的问题,如果要处理这种问题该怎么办呢?我一直思考,都没有想出什么好办法。
这时候就体现出了,经验与知识的重要性。我遍寻无果后,便去问了同事和经理,经过他们的指导,算是有了一些头绪。
使用队列来控制搜索的次数与条件。
//队列 Queue:function(){ var arr = []; //入队 this.push = function (item) { arr.push(item);