Cancelar solicitação de bloodhound pendente no Twitter typeahead.js
Tenho o twitter typeahead.js configurado assim:
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)
}
});
Quando o usuário faz uma pesquisa e começa a digitar algo como "chave" e faz uma pausa, uma solicitação de pesquisa está sendo enviada ao servidor por bloodhound. Quando o usuário adiciona letras ao campo de entrada, outra pesquisa é enviada ao servidor, por exemplo "palavra-chave".
Mas a "chave" da solicitação pendente está sendo aguardada pela primeira vez para ser concluída pelo navegador e, em seguida, o servidor processa a segunda solicitação e somente após a conclusão, os resultados são mostrados.
Portanto, pode levar um longo tempo até que qualquer resultado seja visto pelo usuário.
Existe uma maneira de cancelar a solicitação pendente através do bloodhound quando a palavra-chave é alterada?