最近项目中遇到了防抖与节流问题,搜索了很多文章都有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了