请问为什么setTimeout()不起作用?

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

是一段写在vue组件里的代码

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

    }

请问为什么这段代码没法起到debounce的效果?
数字不断在增加?

阅读 4.4k
3 个回答
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

参考一下,希望对你有帮助

setTimeout 第一个参数必须是个方法
timer = setTimeout(()=》{this.msg1++} ,5000}

  mv1:function(e){
    var timer ;
    clearTimeout(timer);
    timer = setTimeout(() => this.msg1++,5000); // 注意这里

    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题