鍍金池/ 問答/HTML/ 請問為什么setTimeout()不起作用?

請問為什么setTimeout()不起作用?

<div class="panel" @mousemove="mv1">debounce=========={{msg1}}</div>

是一段寫在vue組件里的代碼

    mv1:function(e){
    var timer ;
    clearTimeout(timer);
    timer = setTimeout(this.msg1++,5000);

    }

請問為什么這段代碼沒法起到debounce的效果?
數字不斷在增加?

回答
編輯回答
失心人

setTimeout 第一個參數必須是個方法
timer = setTimeout(()=》{this.msg1++} ,5000}

2017年4月8日 13:36
編輯回答
野橘
function debounce(func, time) {
    var timer = null
    return function() {
        clearTimeout(timer)
        timer = setTimeout(func, time)
    }
}

// 驗證
var n = 10
var foo = debounce(function(){console.log(n)}, 3000)
while(n--) {
    foo()
}
// 不管n多大 都只會輸出 -1

參考一下,希望對你有幫助

2017年6月28日 04:23
編輯回答
尤禮
  mv1:function(e){
    var timer ;
    clearTimeout(timer);
    timer = setTimeout(() => this.msg1++,5000); // 注意這里

    }
2017年9月19日 18:22