搜索&LazyLoad可以'打字速度跟不上

Search & LazyLoad can't keep up w/ typing speed?

本文关键字:速度 跟不上 可以 amp LazyLoad 搜索      更新时间:2024-01-13

所以,所有的代码都运行得很好。查询数据库时,节点/父ID会延迟传递给jsTree,如果在搜索栏中键入一个术语,类似的过程也会继续,但传递给jsTree的节点是另一个SQL查询(使用类似SELECT nodeID FROM table WHERE name LIKE %searchTerm%的东西)返回的节点。

只有一个问题:

如果我在搜索栏中输入得太快,结果就会相互混淆。如果我打字速度慢(我估计每秒最多2个字母),一切都会很好。再快一点,一切都模糊了。(也就是说,如果我正在搜索包含"test"一词的名称,并快速键入,我会得到包含"t"、"te"、"tes"answers"test"的名称,而不仅仅是包含"test"的名称。)

以前有人有这个问题吗?我应该使用"等待准备就绪"功能吗?

我可以建议您执行"超时"解决方法。基本上,您创建了一个延迟为200-400毫秒的SetTimeout函数,并在那里启动您的lazyload ajax。每个inputbox.change事件都会重新启动时间。参见伪javascript中的示例:

$('#your-input').keydown(function(){
    if(ajaxTimer != undefined) {
        clearTimeout(ajaxTimer);
    }
    ajaxTimer = setTimeout(function(){
        $.ajax({...}).done(function() {...}
    },400);
})

在键入输入上使用一个节流阀,基本上可以保证函数的最大调用次数为每X秒一次。当然你可以自己写,但是已经有一个很棒的图书馆了。

如果你感兴趣,可以看看http://benalman.com/projects/jquery-throttle-debounce-plugin/