在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 做搜索框查詢,防止用戶輸入過快,可以用什么框架?

做搜索框查詢,防止用戶輸入過快,可以用什么框架?

就是用戶輸入字符串,然后發(fā)ajax后臺請求的,用戶連續(xù)輸入,我取租后一個(gè)值去查詢

我知道的可以用 rxjs,不知道 lodash 是否能做到? 網(wǎng)上查詢了一下沒有找打結(jié)果

回答
編輯回答
命多硬

lodash 的 debounce

import debounce from 'lodash/debounce'

export default {
    ...
    data () {
        return {
            searchText: ''
        }
    },
    
    watch: {
        // 每次輸入文字改變的時(shí)候,調(diào)用「去抖過的搜索函數(shù)」
        searchText: 'debounceSearch'
    },
    
    methods: {
        search () {
            // 搜索邏輯
        }
    },
    
    created () {
        // debounceSearch 的作用 - 對搜索函數(shù)進(jìn)行「去抖」
        // 即在 500ms 內(nèi),如果一直有文字發(fā)生變化,**this.search 就不會(huì)調(diào)用**
        // 直到 500ms 后,無搜索文字變化了再調(diào)用 this.search
        this.debounceSearch = debounce(this.search, 500)
    }
    ...
}

順便說一下,debounce 的實(shí)現(xiàn)就是基于 setTimeout,并沒有什么神奇的東西,樓上也有小伙伴給出了相關(guān)示例

最后推薦使用 lodahs/debounce,畢竟項(xiàng)目中還是要盡量避免重復(fù)造輪子。如果不是很清楚原生怎么實(shí)現(xiàn)的,倒是可以去自己實(shí)現(xiàn)一個(gè)。

2017年7月7日 08:09
編輯回答
悶油瓶

lodash

2017年8月6日 17:19
編輯回答
赱丅呿

rxjs,lodash 都可以做到,里面debounce的函數(shù)可以輔助。
其實(shí)這個(gè)需求,沒你想的這么復(fù)雜,用這些有點(diǎn)殺雞用牛刀的意思。自己寫個(gè)setTimeout簡單控制下就可以了,網(wǎng)上的示例很多,你可以查下。

2018年2月19日 23:10
編輯回答
陌顏

不用框架??!可以自己寫這個(gè)。

現(xiàn)在你的問題描述不是很清楚,你這個(gè)后臺去請求是點(diǎn)擊按鈕后?還是每次通過change事件去提交,如果根據(jù)change事件其實(shí)可以加個(gè)類似硬件去抖的功能,什么意思呢?就是延遲一段時(shí)間去判斷是否值是否發(fā)生變化,如果沒有則提交如果有就等待一段時(shí)間后在比對

2017年12月16日 16:39
編輯回答
假灑脫

可以用watch檢測輸入框的改變,然后settimeout延時(shí)做一個(gè)判斷

2018年4月16日 19:32
編輯回答
莫小染

沒有這么復(fù)雜的...
用個(gè)setTimeout就行了:

data:{
    timer: null
},
methods:{
    handleChange(){
        this.timer = new Date().getTime()//每次搜索框值改變都保存當(dāng)前時(shí)間
        setTimeout(()=>{
            //0.5秒后比較當(dāng)前時(shí)間和最后一次搜索框值改變時(shí)的時(shí)間的差值
            //只有大于等于setTimeout的間隔才調(diào)取接口
            if(new Date().getTime() - this.timer >= 500){
                this.doAjax()
            }
        },500)
    }
}
2018年1月29日 00:42