js アンチシェイク、スロットル

最後の計算時間に応じて 1 秒に 1 回だけ関数を実装するには_sendBusinessCircle()、JavaScript で関数をsetTimeout手ぶれ補正 (デバウンス) テクノロジーと組み合わせて使用​​します。

export default {
  name: "WriteComment",
  data() {
    return {
      debounceTimer: null, // 添加一个用于防抖的定时器
    };
  },
  methods: {
    _sendBusinessCircle() {
      // 这里是您的 _sendBusinessCircle 函数的原始代码
    },
    debounceSendBusinessCircle() {
      clearTimeout(this.debounceTimer); // 清除之前的定时器(如果有)
      this.debounceTimer = setTimeout(() => {
        this._sendBusinessCircle();
      }, 1000); // 设置新的定时器,在 1 秒后执行 _sendBusinessCircle()
    },
  },
};

最初のクリックで時間のカウントを開始し、関数が次の 1 秒間に 1 回だけ実行されるようにするには_sendBusinessCircle()、スロットル手法を使用できます。ここではスロットルを使用しています

export default {
  name: "WriteComment",
  data() {
    return {
      lastExecutionTime: 0, // 添加一个用于节流的变量,存储上次执行的时间
    };
  },
  methods: {
    _sendBusinessCircle() {
      // 这里是您的 _sendBusinessCircle 函数的原始代码
    },
    throttleSendBusinessCircle() {
      const currentTime = new Date().getTime();
      if (currentTime - this.lastExecutionTime > 1000) { // 检查距离上次执行是否已经过了 1 秒
        this._sendBusinessCircle();
        this.lastExecutionTime = currentTime; // 更新上次执行的时间
      }
    },
  },
};

おすすめ

転載: blog.csdn.net/weixin_44523517/article/details/130029723