小程序钟自定义一个简单的队列

事情起因

在小程序蓝牙写入时,如果短时间内,多次调用,将会导致部分调用写入失败,因此,我就想简单写一个队列来进行写入的调用

逻辑分析

小程序onshow的时候,定义一个selfData,用来存放本次所需的一些数据,同时开启定时器

onShow: function(){
    this.selfData = {
        doNum= 0, //执行次数
        writeArr = [],  //用来存放写入时需要的参数
        timeStamp = 0 //时间戳
    }
    this.timerFnc()
}
复制代码

当需要写入的时候,调用doWrite传递参数

doWrite: function(obj){
    this.selfData.writeArr = this.selfWirteArr.concat(obj)
}
复制代码

获取时间戳函数(也可以直接使用微信提供的时间戳)

getTime: function(){
    let date = new Date()
    return date.getTime()
}
复制代码

在定时器中主要处理主要逻辑

timerFnc: function(){
    let {doNum, writeArr, timeStamp } = this.selfData
    let nowTime = this.getTime()
    let num = nowTime - timeStamp //时间间隔
    if(num<199&doNum<writeArr.length){
        this.selfData.doNum++  //这里必须要加上this.selfData
        this.selfData.timeStamp = nowTime
        let obj = this.selfData.writeArr[this.selfData.doNum]
        write(obj)
    }
    this.setTimeTimer = setTimeout(this.timeFnc,100)
}
复制代码

在onHide的时候清空计时器与自定义数据

onHide: function(){
    this.selfData = {}
    clearTimeout(this.setTimeTimer)
}
复制代码

结束语

这只是其中的一种解决思路,还有很多不足,譬如用户1秒钟暗了10次,按照本次的逻辑,要等到2秒钟之后才能发送完成,写入执行的话就更久了,那么就会给用户一种卡顿的感觉,具体的解决思路还是要看需求,看更加注重准确性还是用户体验,但是那个就不是本篇的主题了.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值