延时模糊查询怎么写呢?

当用户在输入框上输入东西的时候,下面自动显示出搜索结果来。但是我想的是当延迟一秒,判断用户还有没有继续输入或者删除的意愿再进行ajax调用模糊查询。。我该怎么写呢

阅读 4.3k
4 个回答

去抖,这种时候就要掏出代码了。这个就是一个。

    debounce_return: function (fn, delay) {
        var timer = null;
        return function () {
            var context = this;
            var args = arguments;
            clearTimeout(timer);
            timer = setTimeout(function () {
                fn.apply(context, args);
            }, delay);
        };
    },

我来个简易版。每次按下键盘,就设置一个定时器,如果用户再一次按下键盘,就清除上一次的定时器,并且重新设置一个。这样当最后用户没有再次按下键盘的时候,最后一个定时器不会被清除就会执行。

 inputElement.onkeyup = function(){
        var timer = null;
        return function(){
            timer && clearTimeout(timer);
            timer = setTimeout(function(){
                //你的代码
                
            }, delay);
        };
    }

搜js 防抖就懂了,(手机码字不好写代码)

轮子专业户提醒你,如果你会redux,那么就用redux-saga来做这一个,且还能够处理竞态情况,比如,你延迟1s后查询,接着又输入又延迟1s继续查询,假设第一次查询没有第二次查询快,那么,saga可以处理掉第一次查询,将第二次查询的结果返回给你作为真正的查询结果。
中文链接:http://leonshi.com/redux-saga...
目前saga版本是v15,文档是v9,比较老了,但是可以用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题