VUE中使用防抖与节流,以及this指向问题
最近项目中遇到了防抖与节流问题,搜索了很多文章都有this指向的问题,最后不得不采取一种很low的方法data中定义isFirst为1if (this.isFirst < 2){this.isFirst = 2setTimeout(() => {this.isFirst = 1}, 1000)}这样就形成了假的节流但是我们怎么能屈服于这种写法继续探索vue项目中用闭包的方式防抖节流一顿
·
最近项目中遇到了防抖与节流问题,搜索了很多文章都有this指向的问题,最后不得不采取一种很low的方法
data中定义isFirst为1
if (this.isFirst < 2){
this.isFirst = 2
setTimeout(() => {
this.isFirst = 1
}, 1000)
}
这样就形成了假的节流
但是我们怎么能屈服于这种写法
继续探索vue项目中用闭包的方式防抖节流
一顿操作后
const delay = (function () {
let timeout
return (callback, ms) => {
if (timeout) clearTimeout(timeout)
let callNow = !timeout
timeout = setTimeout(() => {
timeout = undefined
}, ms)
if (callNow) callback.apply(this, [callback, ms])
}
})()
export default {
methods: {
delay(() => {
// do something
}, 1000)
}
}
用了立即执行的函数方法,就能够获取到全局的this了
更多推荐
已为社区贡献2条内容
所有评论(0)