微信小程序实现在同一页面事件只执行一次的问题

352 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在小程序开发的过程中,经常会遇到在监听事件中同一个事件会被执行 N 次,为了避免性能浪费,或者避免开发错误,我们需要做一些操作实现同一页面一个事件只执行一次。实现思路比较简单,即在监听事件中定义一个 flag:1,当事件被触发的时候给flag+1,然后判断只有flag=1的时候事件才会执行。具体代码如下:

data: {
    tag1,
},
methods: {
    change(){
        if(this.data.tag == 1){

          ...具体事件代码

        }

        this.data.tag = this.data.tag+1;
    }
}

网上还有其他的解决函数多次调用只执行一次的小技巧方法:比如使用 全局变量 globalData,但大致思路是一样的。

Page({
  data: {
    //新增
    aa:true
  },

  onLoad: function (options) {

  },
  play(e){
    console.log(e.detail)
    let a=Math.floor(e.detail.duration/3)
    let b=Math.floor(e.detail.currentTime)
    if(a==b&&this.data.aa){
      //新增
        this.setData({
          aa:false
        })
       console.log("已记录")
    }
  }
})

欢迎指正,如果有更好的方法,也请不吝赐教。