js 如何判断数据流连续几秒内没有变化

我有一个websocket连接,连续不间断接收消息的,如何判断消息三秒内没有变化?

阅读 270
评论
    4 个回答
    • 1.8k

    构建一个缓冲类,定义一个push方法,可以存入数据,同时打上时间戳,定时清除超时数据.
    定义一个check方法,调用时检查缓存的数据是否一致.

    class Stack{
    
        clear() {
            const now = Date.now()
            this.pool = this.pool.filter(it => now - it.timestamp < this.MAX_TIME_GAP)
        }
        
        push(data) {
            this.pool.push({
                data,
                timestamp: Date.now()
            })
        }
        
        check(isSame = ((a,b)=> a===b)) {
            this.clear();
            return this.pool.every(a => isSmame(a.data, this.pool[0].data))
        }
    }
      • 3.7k

      rxjs 总有一款 operator 适合你,如果没有那就组合拳。

        在 WebScoket 的回调里面,用防抖函数的形式整一下,
        注意不要用 setInterval 这个是按时抛出的结果,实际的反馈时间 6 > datetime > 3

          • 873

          记得清除 setInterval

          let thisTime;
          
          function handleWebsocket() {
              thisTime = new Date().getTime();
              // to do
          }
          handleWebsocket();
          
          setInterval(() => {
              const now = new Date().getTime();
              // 这个时间不是很准,所以 3100 这里自己看着写
              if (thisTime > now - 3100) {
                  // to do
              }
          }, 3000);
            撰写回答

            登录后参与交流、获取后续更新提醒

            相似问题
            推荐文章