首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript,在循环中播放声音

Javascript,在循环中播放声音
EN

Stack Overflow用户
提问于 2021-03-02 01:40:06
回答 1查看 23关注 0票数 0

我需要按顺序播放一系列声音。在我目前的代码中,声音几乎是一次性播放的,而不是按顺序播放的。我尝试过各种setTimeout()、setInterval()组合,但由于声音的长度各不相同,所以我没能做到这一点。有没有办法我可以设置一个条件标志,以确保声音不会重叠?睡眠()函数是唯一的答案吗?

代码语言:javascript
运行
复制
function playAll()
{

for (i = 0; i < 10; i++) {
playSound(sound[i]);

// if sound is finished, continue loop
// need some type of flag?


}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 01:46:14

HTMLAudioElements fire a

元素停止播放时引发的。如果你放弃了

这样,当下一次调用时,它将返回一个Promise

事件在元素上激发,则可以只

循环中的调用:

代码语言:javascript
运行
复制
const playSound = soundElement => {
    soundElement.play();
    return new Promise((resolve) => {
        soundElement.addEventListener('ended', resolve)
    })
}
function playAll() {
    for (let i = 0; i < 10; i++) { // don't forget to declare the variable with `let`
        await playSound(sound[i]);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66426938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档