Javascript 在同时调用期间仅执行最后一个Ajax调用

Javascript 在同时调用期间仅执行最后一个Ajax调用,javascript,jquery,ajax,coffeescript,Javascript,Jquery,Ajax,Coffeescript,我正在使用Elasticsearch制作一个搜索引擎,当用户在文本输入中搜索某个内容时,它会自动完成 我的JS代码工作得很好,但是如果添加或删除的字符超过3个,它会发送一个新的Ajax调用 所以我试图拒绝所有以前的Ajax调用,只执行最后发送的调用 我的JS代码现在看起来像这样 class @SearchEngine search: -> @searchInput = $('.search-input') @minChar = 3 @

我正在使用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()
class@SearchEngine
搜索:->
@searchInput=$(“.search input”)
@minChar=3
@actionUrl=$('.search form').attr('action'))
@t正文=$(“#t正文”)
@searchInput.on'keyup',=>
@query=@searchInput.val()
如果(@minChar
如果是数据?
@tbody.html数据
momentFromNow()
有没有办法拒绝之前所有的Ajax调用,然后执行最后一个