此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

AudioContext.close()

基线 广泛可用

自 2021年4月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

AudioContextclose()方法可以关闭 audio context,同时释放占用的所有系统资源。

关闭的 context 不能用来创建新节点,但可以解码音频数据,创建 buffer 等等

该函数不会自动释放所有用AudioContext 创建的对象,除非其他引用也都已经解除了。但是,它会强制释放所有可能阻止其他AudioContexts 被创建或使用的系统音频资源。挂起 audio context 中音频时间的进度,并停止对音频数据的处理。所有的 AudioContext 创建/阻塞资源都被释放后,返回的Promise才会被释放。如果在一个OfflineAudioContext上调用该方法,则会抛出INVALID_STATE_ERR 异常。

语法

js
var audioCtx = new AudioContext();
audioCtx.close().then(function() { ... });

返回值

一个 resolve void 值得 Promise

例子

下面这段代码是AudioContext states demo (直接运行) 中的,点击停止按钮调用close()。promise 释放后,回到初始状态。

js
stopBtn.onclick = function () {
  audioCtx.close().then(function () {
    startBtn.removeAttribute("disabled");
    susresBtn.setAttribute("disabled", "disabled");
    stopBtn.setAttribute("disabled", "disabled");
  });
};

规范

规范
Web Audio API
# dom-audiocontext-close

浏览器兼容性

参见