What is the best way to destroy an audionode

Hel*_*rld 6 javascript html5-audio web-audio-api

I'm building something which requires the creation and destruction of potentially a lot of audio nodes. As far as I am aware, in order to destroy an audio node it is necessary to:

  1. set all references of the node to null or something else
  2. call the stop method if applicable
  3. disconnect all connections in and out

前两个很简单,但我试图弄清楚是否可以列出所有节点的连接,并且还需要知道列表中是否缺少其他内容。我还需要知道如何检测未引用的音频节点的存在

小智 4

以下是AudioNode 生命周期的规范

只要有任何对 AudioNode 的引用,它就会存在。参考文献有以下几种类型:

  1. 遵守正常垃圾收集规则的正常 JavaScript 引用。
  2. AudioBufferSourceNodes 和 OscillatorNodes 的播放参考。这些节点在当前播放时维护对自身的播放引用。
  3. 如果另一个 AudioNode 连接到它,则会发生连接引用。
  4. 只要 AudioNode 具有尚未发出的任何内部处理状态,AudioNode 就会对其自身进行维护的尾部参考。例如,ConvolverNode 有一个尾部,即使在收到无声输入后也会继续播放(想象一下在大型音乐厅中拍手并继续听到声音在整个大厅中回响)。一些 AudioNode 具有此属性。具体节点请查看详细信息。

只要 AudioContext 处于活动状态,任何直接或间接连接到 AudioContext 的 AudioDestinationNode 的循环连接的 AudioNode 都将保持活动状态。

所以,根据我的理解:

  • 只需要停止正在播放的 AudioNode 即可。
  • 其他人最好断开连接。
  • 将它们全部断开并没有什么坏处。