javascript - 在JS中按顺序播放歌曲
问题描述
我正在尝试制作一个 MP3 随机播放器。我已经完成了每一个数组和循环,但让我苦恼的是每首歌都在同一时间播放,基本上是这样的:
var num; var x = 0; let music = ['https://samplelib.com/lib/previeww/mp3'sample-3s.mp3', 'https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3']; funcion button(){ for (let i = 0; i < 4; i++){ num = Math.floor(Math.random()*3);
console.log(num);} music.play(num)} music[num].addEventListener('end', console.log("placeholder")});
会发生什么,正如我之前所说的那样,循环不会等待声音完成,它会一遍又一遍地返回,直到页面崩溃。有什么办法让他等着再播放?
解决方案
您将需要为我们提供更多背景信息才能给您一个非常好的答案。
我的猜测是,你在 for 循环中调用的任何函数都是异步发生的。基本上,您的 for 循环可能会连续 4 次按下开始按钮,而无需等待结束发生。
如果您查看您在 for 循环中调用的 mp3 播放器对象/函数的文档,您可能能够识别一个检查歌曲何时结束的函数,然后在调用下一次迭代之前等待它for 循环
推荐阅读
- c - Bash 没有为可执行文件设置内存
- html - 带顺风的类 text-white 不起作用
- python - 如果我不调用 super().__init__(),自定义异常类的父级如何获取参数?
- typescript - 链接观察者 RxJs
- java - java:错误:不支持发布版本 17
- javascript - 如果 url 以 / 开头,则 Ajax 调用不会为 window.location.href 加上前缀
- owl-carousel - 我如何在 owl carousel 中的每张幻灯片上显示 4 个项目
- javascript - Svelte js with store and Prism library issue
- typescript - 摩纳哥编辑打字稿不提供建议
- database - 如何编辑数据库中存在数据的数据?在代码点火器 3 上