如果函数在1秒内被调用了50次,则只运行一次



这是一个函数,它的作用是在新订单到来时播放声音。所以一次有50个订单,现在它播放50次声音,其中只有1次就足够了。你知道我怎样才能做到这一点吗?

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

发现了一些类似的问题,但他们对此没有提供太多帮助。

使用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();
}

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

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

最新更新