当用户在文本输入中搜索内容时,我正在使用Elasticsearch创建搜索引擎并自动完成。
我的JS代码工作正常,但如果超过3个,它会在每个添加或删除的字符中发送一个新的Ajax调用。
所以我试图拒绝所有以前的Ajax调用,只执行上次发送的。
我的JS代码现在看起来像这样
class @SearchEngine
search: ->
@searchInput = $('.search-input')
@minChar = 3
@actionUrl = $('.search-form').attr('action')
@tbody = $('#tbody')
@searchInput.on 'keyup', =>
@query = @searchInput.val()
if (@minChar <= @query.length)
$.ajax
url: @actionUrl
type: 'GET'
data: {
search: @query
}
.done (data) =>
if data?
@tbody.html data
momentFromNow()
有没有办法拒绝所有以前的Ajax调用然后执行最后一个?