函数多次调用只执行一次的小技巧(微信小程序)

函数多次调用只执行一次的小技巧(微信小程序)

问题由来:案例一:当视频播放至3分之2后,记录该用户为有效用户。

问题所在:函数执行判断多次成功

video.wxml文件代码如下:

<video bindtimeupdate="play" src="/video/movie.mp4" ></video>

video.js文件代码如下:

Page({
  data: {

  },
  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){

       console.log("已记录")
    }
  }
})

微信小程序视频播放时,每250ms获取一次当前时间currentTime,当判断时,a==b的判断会多次成功,则会打印多次,如下图:
在这里插入图片描述
这导致的结果就是我们会向服务器多次发送记录请求,那么我们就需要控制函数多次触发,但只执行一次请求,针对该情况,解决方案如下:

解决方案:增加新判断

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("已记录")
    }
  }
})

data中新增aa:true,虽然a==b条件成立的情况可能有多次,但a==b&&this.data.aa成立的情况只有一次,因为当console.log("已记录")执行时,this.data.aa已经为falsea==b&&this.data.aa不再成立,故达到了函数多次调用,但只执行一次的效果!!

结果如下:
在这里插入图片描述

如有更好的方案,请留言探讨!!

如有出入,欢迎指正!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值