如何通过取消中间请求来提高Typeahead性能?

时间:2016-02-24 03:22:50

标签: ruby-on-rails solr typeahead.js sunspot-rails sunspot-solr

我正在使用gems sunspot_solr sunspot_rails twitter-typeahead-rails ,如this tutorial中所述。一切都融为一体,运作良好。

但是,我注意到如果用户在键入时暂停,则会使用到此时键入的值来进行多个连续请求。

例如,在搜索 Elizabeth Street Sydney 时,有多个GET请求:

enter image description here

请求由Typeahead触发,并使用Bloodhound建议引擎,remote选项指向Search控制器,该控制器以JSON格式返回搜索结果:

var addresses = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: '/search/query.json?q=%QUERY',
    wildcard: '%QUERY'
    }
  });

$('.typeahead').typeahead(null,{
  name: 'addresses',
  source: addresses
  }
}

由于这些请求按顺序执行,因此在最后一个请求完成之前不会显示建议的文本。

是否可以在发出新请求时取消之前的请求? (或者,是否有更好的方法可以避免运行多个查询?)

0 个答案:

没有答案