在Meteor中添加延迟事件的最佳方法?

时间:2014-11-26 09:53:24

标签: performance events javascript-events meteor

我正在向流星应用添加搜索功能,并希望在键盘事件后触发搜索,再加上500ms左右。我不希望在每个单独的密钥后在服务器上调用我的meteor方法,因为如果有人输入的话会是......很多电话。

如何在500ms的keyup事件中添加延迟,但如果检测到另一个keyup事件,则触发事件已取消

2 个答案:

答案 0 :(得分:3)

使用underscore软件包的debounce功能。您可能需要通过underscoremeteor add underscore添加到项目中。但我认为它已被默认包含在内。

var doSearch = _.debounce(function() {
   // do your search
}, 500);

更多信息:http://underscorejs.org/#debounce

答案 1 :(得分:0)

  

3年后回答

接受的答案令问题混淆,问题是" 在Meteor中添加延迟事件的最佳方式?"。

目前流星1.5.2是最新的,以下是该问题的确切预期功能。

编写事件监听器活动的默认方式

Template.YourTemplateName.events({
    // inputs with either id/class as "search"
    'input #search, input .search': function(event, template){
      console.log('Searching.');
    }
});

添加具有预期延迟的事件

Template.YourTemplateName.events({
    // inputs with either id/class as "search"
    'input #search, input .search': _.debounce(function(event, template){
      console.log('Searching.');
    }, 1000)
});
  默认情况下

underscore,您可以使用命令lodash安装meteor npm install lodash。然后将lodash作为import _ from 'lodash';

导入到您的js文件中