Javascript 如果函数在1秒内被调用50次,则只运行该函数一次
这就是它的功能,当新的秩序到来时,它会发出声音。因此,一次有50个订单,现在它播放声音50次,只有1次就足够了。你知道我怎样才能做到这一点吗Javascript 如果函数在1秒内被调用50次,则只运行该函数一次,javascript,function,repeat,Javascript,Function,Repeat,这就是它的功能,当新的秩序到来时,它会发出声音。因此,一次有50个订单,现在它播放声音50次,只有1次就足够了。你知道我怎样才能做到这一点吗 function playSound() { var audio = new Audio('/audio/short_notification.mp3'); audio.play() } 找到了一些,但他们没有在这方面提供太多帮助。您可以使用全局变量var检查它是否播放过一次 var isPlayedOnce = false; func
function playSound() {
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;
}
}
您可以使用全局变量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();
使用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();
您可以设置
计时器
,并检查函数是否在最后一秒被调用
let timer=0;
函数playSound(){
如果(Date.now()-计时器<1000)返回;
计时器=Date.now();
var audio=新音频('/audio/short_notification.mp3');
音频播放();
}
您可以设置计时器
并检查该函数是否在最后一秒被调用
let timer=0;
函数playSound(){
如果(Date.now()-计时器<1000)返回;
计时器=Date.now();
var audio=新音频('/audio/short_notification.mp3');
音频播放();
}
您要找的是debounce或Dethrottle如果订单“一次全部”发出,为什么每个订单都有声音?任何导入这些订单的人都应该为导入触发一次声音,而不是为每个订单触发一次。您可以在调用该方法的位置添加代码吗?您要查找的是debounce或DeThrottle如果订单“一次全部”发出,那么为什么每个订单都有声音?任何导入这些订单的人都应该为导入触发一次声音,而不是为每个订单触发一次声音。您可以在调用该方法的位置添加代码吗?这仅在第一个操作中有效,但当以后出现新订单时,该值始终为真,除非我们重新加载浏览器以将标志重新初始化为假。然后,当您收到新订单时,您可以将此isPlayedOnce更新为true,但只有当您能够区分新订单和旧订单时,此操作才有效。如果不是您的情况,则您可以等待一段时间,然后使用setTimeout或使用任何变量(在其上存储以前的时间)将isPlayedOnce更新为true。这仅在第一次操作中有效,但在以后的新顺序出现时,该值始终为true,除非我们重新加载浏览器以将标志重新初始化为false。然后,当您收到新订单时,您可以将此isPlayedOnce更新为true,但只有当您能够区分新订单和旧订单时,此操作才有效。如果情况并非如此,则可以等待一段时间,然后使用setTimeout或使用任何变量(在其上存储以前的时间)将isPlayedOnce更新为true