我的 Twitter typeahead.js 设置如下:
var filteredSource = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '@Url.Action("Get", "Search")/',
prepare: function (query, settings) {
settings.url = settings.url + $('#filter-select').val() + '?q=' + encodeURIComponent(query);
return settings;
},
rateLimitBy: 'throttle',
rateLimitWait: 800
}
});
$('#search').typeahead({
hint: false,
highlight: true,
minLength: 3
}, {
name: 'filtered-source',
display: 'value',
limit: 50,
source: filteredSource,
templates: {
empty: [
'<div>',
' Unable to find any results.',
'</div>'
].join('\n'),
suggestion: Handlebars.compile(templateData)
}
});
当用户进行搜索并开始输入“key”之类的内容并暂停时,猎犬将向服务器发送搜索请求。当用户将字母添加到输入字段时,另一个搜索将被发送到服务器,例如“关键字”。
但待处理的请求“key”首先等待浏览器完成,然后服务器处理第二个请求,只有在完成后才会显示结果。
因此,用户可能需要很长时间才能看到任何结果。
有没有办法在关键字更改时通过 Bloodhound 取消待处理的请求?