在按下的每个键上实现自动建议

时间:2014-02-21 17:17:02

标签: python multithreading algorithm wxpython multiprocessing

我正在实现一个带有自动建议值的文本框,它在每个按下的键上从mysql数据库获取值。由于我在数据库中有大量的值,我的函数需要时间。而且每次调用函数都是按顺序运行的< / p>

假设 我按了一个键,触发事件并执行func启动。 然后我按下了B键,这又触发了一个事件,但现在我想要在运行第二个函数之前杀死早期的func

我怎样才能实现这个目标?

在搜索中我发现线程可以用来实现这个。但是我仍然无法通过线程实现。如果有人知道确切的程序?

1 个答案:

答案 0 :(得分:1)

这是一个很好的(在我看来)求职面试问题和Nathan Leclaire wrote about it on his blog

相关摘录:

  

如果我们使用window.setTimeout,我们可以将调用延迟200毫秒。 ...但是在用户输入速度很快,甚至只是正常速度的情况下,这对我们没有帮助。因此,如果用户继续输入,我们需要一种方法来中断超时。

...

  

所以,我知道当你调用window.setTimeout时,你会得到一个唯一引用超时的ID。如果需要,您可以使用它来取消超时!所以我们应该只在keypress函数闭包中存储超时ID,如果用户在超时函数触发之前再次触发keypress事件,我们只需取消它并设置一个新的!

最后,他分享了一些代码示例,我想这可以帮助您优化您的功能!

$(document).ready(function() {
  $('input').keypress(function() {
    if (this.timeoutId)
      window.clearTimeout(this.timeoutId);
    this.timeoutId = window.setTimeout(function () {
      $.ajax({
          // do some stuff
      });
    }, 200);
  });
});