首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

播放声音x次,间隔x秒。setTimeout不工作

是因为setTimeout函数是JavaScript中的一个定时器函数,用于在指定的时间后执行一次特定的代码。然而,由于JavaScript是单线程的,当执行到setTimeout函数时,它会将代码放入事件队列中,等待指定的时间后执行。但是,如果在指定的时间内,JavaScript引擎正在执行其他代码,那么setTimeout函数可能会延迟执行或者根本不执行。

解决这个问题的一种方法是使用setInterval函数来代替setTimeout函数。setInterval函数会在指定的时间间隔内重复执行特定的代码,而不是只执行一次。通过设置一个计数器,可以控制代码执行的次数,从而实现播放声音x次的效果。以下是一个示例代码:

代码语言:javascript
复制
var count = 0;
var interval = setInterval(function() {
  // 播放声音的代码
  
  count++;
  
  if (count === x) {
    clearInterval(interval);
  }
}, x * 1000);

在上述代码中,我们使用了一个计数器变量count来记录代码执行的次数。在每次执行代码后,将计数器加1。当计数器的值等于x时,使用clearInterval函数停止代码的执行。

另外,如果setTimeout函数不工作,可能是由于以下原因:

  1. 代码中存在语法错误或逻辑错误,导致setTimeout函数没有正确执行。可以通过检查代码是否正确并使用调试工具进行调试来解决这个问题。
  2. setTimeout函数的第一个参数是一个函数,如果传递的是一个字符串或其他类型的参数,setTimeout函数也会失效。确保第一个参数是一个函数。
  3. setTimeout函数的第二个参数是一个时间值,如果传递的是一个非数值类型的参数,setTimeout函数也会失效。确保第二个参数是一个数值类型的参数,表示延迟的毫秒数。

总结起来,解决setTimeout不工作的问题可以尝试使用setInterval函数代替,并检查代码中是否存在语法错误或逻辑错误,确保setTimeout函数的参数正确传递。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vue新春游戏-年兽大作战,欢欢喜喜过大年(可在线体验)

游戏规则 玩家需要按住炮竹进行左右移动来攻击年兽,屏幕中间会定时出现问题,回答对问题会增加攻击力等,每道题的回答时间为8钟,问题出现的间隔为5钟,年兽血量为0时游戏结束,击败年兽用时越少越牛逼。...至于声音控制,那肯定是必须的,一是因为防止突然播放音乐对用户造成影响,二是浏览器也有限制,禁止声音自动播放。...,如果打开的话在进行播放,注意,这里不能通过给单一的audio对象改变地址的方式播放不同的音效,因为如果在当前声音正在播放时候,修改音效地址会报错。...,所以这里我们就在生成子弹的时候记录下生成子弹的时间,在requestAnimationFrame下一运行的时候,判断时间间隔是否满足我们对子弹频率的要求,如果满足则往下执行,如果不满足跳过本次执行。...首先来分析一下问题的需求 每道题的答题时间是8钟,无论是否提前选择均展示8 答对题目则增加buff 答错或者在倒计时结束未选择答案将展示正确答案 每道题的间隔时间是5钟 每次出题从题库随机取题,出现过的题目不会第二抽取

63910
  • 从一个超时程序的设计聊聊定时器的方方面面

    第二个参数miliseconds,顾名思义是毫秒,意即间隔多少毫秒执行一参数1。因为是每间隔一段时间执行一,所以起名为间隔计时器。...输出是这样的: 还是那句话,没有错误代表写对了。在代码1中,我们设定定时器每隔1触发一,但在实际的运行过程中,无法保证每隔1执行一。...如下所示: 图1 设间隔定时器每隔10触发一,但青色逻辑代码仅耗时6,在这种情况下逻辑代码并不会对定时器造成影响。...在图1中,如果青色逻辑的执行时间是10s,而定时器的预设间隔是6呢,逻辑代码是多少执行一? 不少于10s。在具体的实例中,可能还存在其它耗时操作,合理的答案是不少于10s。...假设showTime函数的主体部分需要2钟执行完,那么整个函数则要每7钟才执行一。而setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一那个函数。

    1.4K20

    第46天:setInterval与setTimeout的区别

    提示: setTimeout() 只执行 code 一。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。...区别 通过上面可以看出,setTimeout和setinterval的最主要区别是: setTimeout只运行一,也就是说设定的时间到后就触发运行指定代码,运行完后即结束。...(即 要循环运行,需函数自身再次调用 setTimeout()) 而 setinterval是循环运行的,即每到设定时间间隔就触发指定代码。这是真正的定时器。...setinterval使用简单,而setTimeout则比较灵活,可以随时退出循环,而且可以设置为按固定的时间间隔来运行,比如第一1,第二2,第三3。...= 0 y = 0 function count1() { x = x + 1   document.display1.box1.value = x   meter1=setTimeout("count1

    1K10

    新知 | 流媒体源流常见问题与延迟分析处理

    第二类,关键帧的间隔设置不合理 比如左边这个案例,部分观众反馈流的播放延迟很高,达到了8-9。...拉流播放这个客户的流地址时,发现初始下发的音视频内容比较多,再分析客户的源流,发现GOP(关键帧的间隔)有10左右的现象。...但是转码流经过重新编码之后,关键帧间隔正常,也就可以播放了。 第三类,音视频解码的关键信息缺失或匹配 当视频解码关键信息缺失或者匹配时,现象比较明显,主要表现为不能播放或花屏。...但当音频解码器信息缺失或者匹配时,现象则比较隐蔽。比如在左边这个案例中,部分播放器没有声音,但是ffplay播放正常,是有声音的。...例如客户端发送了一段数据之后,等待服务器和ACK,如果超时200毫还没收到,那么下一客户端会进行重试。但是如果下一的ACK再次丢失,超时时间有可能会扩大到400毫

    1.7K30

    js动画requestAnimationFrame详解「建议收藏」

    不同的是这个方法你只需要传入一个回调函数,不需要其他参数,那么你就疑惑了不用指定时间间隔怎么做动画?? 时间间隔自然是有的,但时间间隔由设备的系统决定(不受其他任务的影响)。...通常来你传入的回调函数每秒会执行60,但是如果你的设备的游览器遵循W3c的标准,那么回到函数每秒执行的次数会与你设备的刷新率相匹配。...不仅如此这还是一个高性能的方法,在大多游览器中一旦页面处于浏览器的当前标签,就会自动停止动画。...如果我们使用定时器setTimeout做动画,我们假设显示器的刷新率为60hz(60hz指的是每秒1播放60张动画)。...为了让动画显示流畅,我们需要将定时器setTimeout间隔时间定位 **“1000/60” ** 也就1执行60回调函数,大约每隔16.67毫会执行一,这样就能匹配显示屏的帧率。

    4.7K21

    Windows平台快速集成RTSPRTMP直播播放能力

    NT_SP_Open:每调用一Open接口,对应一个播放实例,如需播放多实例,对应多个player handler。...,这个和静音接口是有区别的,这个接口的主要目的是为了用户设置了外部PCM回调接口后,又不想让SDK播放声音时使用。...如果设置1的话, sdk将在tcp和udp之间尝试切换播放,如果设置为0,则不尝试切换; ⑤ NT_SP_SetFastStartup:设置开, 1为开, 0为开,此接口用于如RTMP服务器缓存...其他值无效. * report_interval: 上报时间间隔(上报频率),单位是,最小值是11....,比如一般的监控场景,考虑到多路的场景,一般关键帧间隔不大(如1-2一个),平台可对现场场景有个宏观了解,如需重点关注某几路画面的时候,再实时取消这个选项,实现全帧播放,所以,只解关键帧一定要做成实时调用的接口才更有设计意义

    2.1K00

    2020已经过去五分之四了,你确定还不来了解一下JS的rAF?

    这也是rAF的最大优势–它能够保证我们的动画函数的每一调用都对应着一屏幕重绘,从而避免setTimeout通过时间定义动画频率,与屏幕刷新频率不一致导致的丢帧。...它的实际常见用法类似于setTimeout,只是不需要设置时间间隔而已。...实际使用示例 「上才艺,E G M,E G M E G M E G M」 我们以在3000毫内移动1500px距离的动画为例 setTimeout的实现方式 以下代码通过setTimeout每10毫间隔时间改变一元素的位置以实现元素的动画效果...所以事实是浏览器可以“强制规定时间间隔的下限(clamping th timeout interval)”,一般浏览器所允许的时间再5-10毫,也就是说即使你给了某个小于10的数,可能也要等待10毫...「浏览器不能完美执行:」 当动画使用10ms的settimeout绘制动画时,您将看到一个时序匹配,如下所示。 ?

    1.1K30

    # JavaScript 专题之 This 和定时器

    传入字符串 setTimeout("alert(0)", 2000); 1 可以接受一个字符串,默认通过 eval() 解析后执行,但是 eval 函数非常耗性能,非特殊推荐。...clearInterval(n); clearTimeout(n); # setTimeout 核心逻辑:N 推入执行栈,而不是 N 后执行, 使用场景:延迟执行某个操作时 问题: 设置 0 也会在下一个宏任务中执行...}, 1000); } 因为异步的原因,setTimeout 被延迟到下一事件循环中执行。...X // return !X } }); console.log(arr); // [1, 2, 3]; 在forEach中使用break、return等都不会跳出循环。...,而不是 N 后执行 会因为前面有代码在执行而导致时间变短 案例代码: 假设有一个 HTTP 轮询,每一查询一数据。

    16110

    直播软件开发之Java音视频解决方案:音视频基础知识

    现实生活中,我们听到的声音都是时间连续的,我们把这种信号叫模拟信号。模拟信号(连续信号)需要量化成数字信号(离散的、连续的信号)以后才能在计算机中使用。...采样: 按照一定的时间间隔在连续的波上进行采样取值,如下图所示取了10个样。 量化: 将采样得到的值进行量化处理,也就是给纵坐标定一个刻度,记录下每个采样的纵坐标的值。...它以每秒上万的速率对声波进行采样,每一采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。...采样频率是指录音设备在一钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。...计算公式:比特率 = 采样率 x 采样精度 x 声道数。

    1.1K10

    【FFmpeg】ffplay 命令行参数 ④ ( 修改窗口标题 -window_title 参数 | 设置播放循环次数 | 设置显示模式 -showmode 参数 | 设置视频滤镜 -vf 参数 )

    循环播放 次数 ; 无限循环 : 设置 0 参数值 , 视频 无限循环 播放 ; 示例 : 视频 循环播放 3 命令如下 ; ffplay -loop 3 input.mp4 执行 ffplay...-x 800 -y 600 -loop 3 yuanshen.mp4 命令 , 将 yuanshen.mp4 视频 循环播放 3 ; 2、设置 播放 指定视频片段 循环播放次数 如果 想在视频的 特定时间点...开始循环播放 , 可以结合使用 -ss 开始时间戳配置参数 和 -t 持续时间配置参数 使用 ; 下面的命令 将从 视频的 10 处开始 , 播放 5 的视频片段 , 并将这个片段循环播放 3 ...命令 , 将 yuanshen.mp4 视频 的 10 ~ 15 循环播放 3 ; 三、ffplay 命令行参数 - 设置显示模式 1、设置显示模式 -showmode 参数 ffplay...的 模式 , 如果指定 -showmode 参数 , ffplay 将以该方式播放视频 ; -showmode 1 参数值 : 显示音频波形 , 也就是 音频的 时域信号 ; ; 视频窗口 显示当前播放音频的波形图

    56010

    MATLAB语音信号处理「建议收藏」

    ,观察现象,给出理论解释; ③ 播放减抽样语音/音乐信号,注意抽样率改变,比较不同抽取间隔下的声音,解释现象。...('频率f'); ylabel('幅度'); %播放减抽样信号 sound(x2,fs);%原信号播放 pause(5); sound(x22,fs/d1);%以d1为间隔减抽样信号播放(非混叠) pause...抽取间隔越小,声音越清晰,时间间隔越大,声音越不清晰,混叠现象越明显。未混叠时,声音尖锐,混叠时,声音轻,只有淡淡的音调,基本没有起伏,不清晰。...我的图中fc不到5000Hz,间隔2采样频率fs为22000Hz大于两倍的fc所以混叠;间隔20采样频率fs为2200Hz小于两倍的fc所以发生混叠。...小结:一收获很多的课设,希望对你有用。

    3.9K42

    FFmpeg推流命令总结

    -t——指定输出文件的持续时间,以为单位。 -ss——从指定时间开始转换,以为单位。...-vn——处理影像,于仅针对声音做处理时使用。 -vcodec( -c:v )——设置影像影像编解码器,未设置时则使用与输入文件相同之编解码器。...声音参数: -b:a——设置每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请引用下方注意事项) -ar——设置采样率。 -ac——设置声音的Channel数。...-acodec ( -c:a ) ——设置声音编解码器,未设置时与影像相同,使用与输入文件相同之编解码器。 -an——处理声音,于仅针对影像做处理时使用。...,每隔20个帧为一个GOP,两个关键帧之间的帧数称为一个GOP,将关键帧帧间隔设置为1s,也就是每秒一个关键帧 -keyint_min 20   最小关键帧间隔  -an 没有音频,“-an”(no audio

    5.9K40

    微信开发中遇到的坑

    1、 用微信的文件上传功能,一只能上传一个文件,多个上传还要用setTimeout把前后时间设到100毫左右... 2、 微信选择图片和录音出来的localId在安卓和iOS之间格式是不一样的!...也就是当你想判断一个字符串是不是微信的本地文件的时候还要根据这两个来...我做语音上传就碰到这个坑 3、 在iOS版中,使用微信录音功能,录完音之后,audio标签播放的音乐会被调得特别小声,关掉页面再打开一个专门用...audio播放声音的页面音量也调不上来,只有双击home键关掉微信再打开,音量才恢复。...播放录音和结束播放之间最好用setTimeout设置个10毫。...解决办法是第一上传图片的时候把图片从微信服务端保存到自己的服务端,然后在服务端缓存一下localID对应的服务端图片是哪张,我是缓存3天,最好多缓存几天,因为每次选择同一张照片都是同一个localId

    77920

    音视频编解码技术基础

    关键帧间隔(GOP) 关键帧与关键帧的间隔,就是一个GOP组。 帧速率(fps) 每秒播放帧的速度,单位是帧多少帧(fps),速率越高,视频越流畅。 视频码率 比特率,每秒传送的比特数。...1Mbit = 128KB1Mbit = 0.125MB 推荐取值 视频码率推荐直接换算,只能是一个参考值。...推荐公示:N x width x height(N取值1~10) 16 kbps :可视电话质量(使用者可以接受的”说话的头”照片的最低要求) 128~384 kbps : 商业导向的视频会议系统质量...如果采样率为44100Hz,表示每秒采样为44100个点,ACC一帧播放时间为:1024 x 100000 / 44100 = 22.32ms 声道 单声道、2声道等。...声轨 一段视频里包含的不同的独立的声音轨道。 采样位数(量化精度) 将模拟信号分成多个等级(一个采样点用了多个位),精度越高,振幅越接近原音乐。CD标准为16Bit,DVD标准为24Bit。

    1.1K30

    你所不知道的setTimeout

    setTimeout(user.sayHi.bind(user), 1000); HTML 5标准规定,setTimeout的最短时间间隔是4毫。...为了节电,对于那些处于当前窗口的页面,浏览器会将时间间隔扩大到1000毫。...另外,如果笔记本电脑处于电池供电状态,Chrome和IE 9以上的版本,会将时间间隔切换到系统定时器,大约是15.6毫。...正确的做法应该是,设置一个门槛值,表示两Ajax通信的最小间隔时间。如果在设定的时间内,发生新的keydown事件,则不触发Ajax通信,并且重新开始计时。...只有当两触发之间的时间间隔大于事先设定的值,这个新函数才会运行实际的任务。假定两Ajax通信的间隔不小于2500毫,上面的代码可以改写成下面这样。

    1.8K121

    【JavaScript基础】Js的定时器(你想看的原理也在哟)

    Js的定时器,是前端的基本工具,在日常的开发和工作上也会经常的使用到。前端的定时器有两种,一种是一性定时器,一种是重复性定时器。...因此实际上,两执行之间的间隔会小于指定的时间。 比如,setInterval指定每100ms执行一,每次执行需要5ms,那么第一执行结束后95毫,第二执行就会开始。...如果某次执行耗时特别长,比如需要105毫,那么它结束后,下一执行就会立即开始。...为了确保两执行之间有固定的间隔,可以不用setInterval,而是每次执行结束后,使用setTimeout指定下一执行的具体时间。...案例 // 一之后打印 const test1 = setTimeout(function(){ console.log('hello world') },1000); ​ // 每秒打印一

    86230
    领券