运行 如果在 1 秒内调用 50 次,则该函数仅调用一次

Run the function only once if its been called 50 times in 1 second

这是函数,它的作用是在有新订单时播放声音。所以有 50 个订单同时来,现在它播放 50 次声音,只有 1 次就足够了。知道如何实现吗?

function playSound() {
    var audio = new Audio('/audio/short_notification.mp3');
    audio.play()
}

找到了一些 similar questions 但他们没有提供太多帮助。

您可以使用一个全局变量var来检查它是否播放过一次。

var isPlayedOnce = false;

function playSound() {
    if(!isPlayedOnce){
         var audio = new Audio('/audio/short_notification.mp3');
         audio.play();
         isPlayedOnce = true;
    }
}

使用 setTimeout 函数重置控制音频播放的变量。

let isPlaying = true;
const silentTimeOutCounter = 1000;

function playSound() {
    if(isPlaying){
      var audio = new Audio('/audio/short_notification.mp3');
      audio.play();
      isPlaying = false;
      setTimeout(() => {isPlaying = true;} ,silentTimeOutCounter);
    }
}

playSound();

您可以设置timer并检查函数是否在最后一秒被调用。

let timer = 0;

function playSound() {
    if (Date.now() - timer < 1000) return;
    timer = Date.now();
    var audio = new Audio('/audio/short_notification.mp3');
    audio.play();
}