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

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

浏览量:804 时间: 来源:泡椒猪肝

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

  • 函数多次调用只执行一次的小技巧(微信小程序)
    • 问题所在:函数执行判断多次成功
    • 解决方案:增加新判断
    • 如有更好的方案,请留言探讨!!

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

问题由来:案例一:当视频播放至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不再成立,故达到了函数多次调用,但只执行一次的效果!!

结果如下:
小程序

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

如有出入,欢迎指正!

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎