创建一个javascript的audio的singleton


因为网页上有很多”语句“要读,之前是通过 new Audio(url)的方式,创建一个新的audio来播放。不小心误点重复点击后,就会出现,多个声音在同播放。

为了解决这个问题,需要采用单一实例的模式,也就是Singleton。 下面看一个简单的实现方式。

# ./lib/singleton_audio.rb
export default class SingletonAudio {
  contructor() {
    if (SingletonAudio.instance)  {
     return SingletonAudio.instance;
    }
  
    SingletonAudio.instance = new Audio();
    return Singleton.instance;
  }
}

# music.js
import SingletonAudio from "lib/singleton_audio"
...
 play() {
    let url = "http..../../../ok.mp3";
    let audio = new SingletonAudio();
    audio.src = url;
    audio.addEventListener("canplaythrough", event => {
        audio.play()     
})
}
...



阅读量: 445
发布于:
修改于: