防抖、節流的概念是用戶高頻率的操作某一事件導致的性能問題。
防抖: 定義一個延遲執行的方法,如果在延遲時間內再調用該方法,則重新計算執行時間。
節流: 在規定的時間內執行方法。
應用場景:
用戶拖動滾動條可以用 節流 方式實現。
mounted() { window.addEventListener('scroll', this.scrollToTop) }, methods: { scrollToTop() { clearTimeout(this.tiemID); this.tiemID = setTimeout(() => { console.log('執行節流函數'); }, 1000); } }
input輸入關鍵字實時發送請求可以用 防抖 方式實現。
<template> <div> <input type="text" :value="value" @input="changeInput"> </div> </template> <script> export default { data() { return { value: '', ms: 3000, timeID: '' }; }, methods: { changeInput(e) { this.value = e.target.value; } }, watch: { value(newValue, oldValue) { if (newValue !== oldValue) { // 數據變化了,執行邏輯,這里做好防抖。 this.ms = 3000; clearTimeout(this.timeID); this.timeID = setTimeout(() => { console.log(this.value); }, this.ms) } } } } </script> <style lang='less' scoped> input { height: 60px; margin: auto; border: 1px solid #ccc; } </style>