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

时间:2017-01-13 14:25:28

标签: javascript jquery ajax coffeescript

当用户在文本输入中搜索内容时,我正在使用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调用然后执行最后一个?

0 个答案:

没有答案