在 Chrome 中,我首先使用 AudioContext 创建一个连续的音调:
var audioCtx = new (window.AudioContext || window.webkitAudioContext);
var oscillator = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);
oscillator.start();
现在我想在几毫秒后停止它。所以我这样做:
setTimeout(oscillator.stop, 500)
这将返回错误Uncaught TypeError: Illegal invocation
。
但是,如果我这样做;
setTimeout(function(){oscillator.stop()}, 500)
它工作正常。
我现在想知道为什么第一个不起作用并返回错误。这似乎是执行此操作的直接方法。