我正在使用gems sunspot_solr , sunspot_rails 和 twitter-typeahead-rails ,如this tutorial中所述。一切都融为一体,运作良好。
但是,我注意到如果用户在键入时暂停,则会使用到此时键入的值来进行多个连续请求。
例如,在搜索 Elizabeth Street Sydney 时,有多个GET请求:
请求由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
}
}
由于这些请求按顺序执行,因此在最后一个请求完成之前不会显示建议的文本。
是否可以在发出新请求时取消之前的请求? (或者,是否有更好的方法可以避免运行多个查询?)