【发布时间】:2019-03-29 22:31:34
【问题描述】:
Vue.js 文档建议使用 lodash 的 debounce 函数来消除昂贵的方法,我已经成功实现了。但有时我不想立即采取行动,lodash 的文档说:
debounced 函数带有一个 cancel 方法来取消延迟的 func 调用和一个 flush 方法来立即调用它们。
但就是这样。没有关于如何调用 flush 方法的信息。我找到了this 博客文章,但我不确定如何在 Vue.js 组件中实现它。
这就是我目前在我的 Vue.js 组件中拥有的 (codepen):
<template>
<input type='text' @keyup="change" @keyup.enter="changeNow">
</template>
<script>
export default {
name: "MyComponent",
methods: {
change: _.debounce(function() {
console.log("changing...");
}, 250),
changeNow: function() {
this.change();
this.change.flush();
}
}
};
</script>
change 被正确地去抖动并且只在键入后运行一次,正如预期的那样。但是,changeNow 会抛出以下错误:
未捕获的类型错误:this.change.flush 不是函数
任何关于如何实现这一点的建议将不胜感激!
【问题讨论】:
标签: javascript vue.js lodash