0

我正在使用 Tracking JS 来帮助检测用户的眼睛是否睁开,然后仅在检测到少于 3 个对象、面部、嘴巴和一只眼睛时才播放音频。我基本上相信它并且工作,但是事件太频繁地跟踪和更新数据,导致非常不稳定和不和谐的体验。

目前,我让跟踪器不断检查跟踪器,如下所示:

  tracker.on('track', function(event) {

      if (event.data.length > 2 ) {
          document.body.classList.add("hide");
          pauseAudio();
      } else {
          document.body.classList.remove("hide");
          playAudio();
      }

有没有办法减少运行这个函数的频率或者指定它每秒应该运行多少次?

4

1 回答 1

0

您可以使用某种节流机制,lodash让它构建它。

_.throttle, 获取一个函数和节流时间,并返回一个节流函数,因此您可以将其用作:

const handler = function(event) {

      if (event.data.length > 2 ) {
          document.body.classList.add("hide");
          pauseAudio();
      } else {
          document.body.classList.remove("hide");
          playAudio();
      }
};
const throttledHandler = _.throttle(handler, 100); // 100ms
tracker.on('track', throttledHandler);
于 2018-03-22T17:41:18.937 回答