The suspend()
method of the AudioContext
Interface suspends the progression of time in the audio context, temporarily halting audio hardware access and reducing CPU/battery usage in the process — this is useful if you want an application to power down the audio hardware when it will not be using an audio context for a while.
This method will cause an INVALID_STATE_ERR
exception to be thrown if called on an OfflineAudioContext
.
A Promise
that resolves with undefined
. The promise is rejected if the context has already been closed.
The following snippet is taken from our AudioContext states demo (see it running live.) When the suspend/resume button is clicked, the AudioContext.state
is queried — if it is running
, suspend()
is called; if it is suspended
, resume()
is called. In each case, the text label of the button is updated as appropriate once the promise resolves.
susresBtn.onclick = () => {
if (audioCtx.state === "running") {
audioCtx.suspend().then(() => {
susresBtn.textContent = "Resume context";
});
} else if (audioCtx.state === "suspended") {
audioCtx.resume().then(() => {
susresBtn.textContent = "Suspend context";
});
}
};