--- title: AudioContext.close() slug: Web/API/AudioContext/close translation_of: Web/API/AudioContext/close ---

{{ APIRef("Web Audio API") }}

{{ domxref("AudioContext") }}的close()方法可以关闭audio context,同时释放占用的所有系统资源。

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

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

语法

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

返回值

一个 resolve  void值得 {{jsxref("Promise")}}。 

例子

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

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

规范

规范 状态 注释
{{SpecName('Web Audio API', '#widl-AudioContext-close-Promise-void', 'close()')}} {{Spec2('Web Audio API')}}  

浏览器兼容性

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatChrome(43.0)}} {{CompatGeckoDesktop(40.0)}} {{CompatNo}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatNo}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatNo}}

另见