Допустим, вы назвали свой процессор my-processor
, а определение вашего AudioWorkletProcessor
выглядит примерно так:
class MyProcessor extends AudioWorkletProcessor {
process () {
return true;
}
}
registerProcessor('my-processor', MyProcessor);
Чтобы проверить, загружен ли уже этот процессор, вы можете сделать что-то подобное из в основном потоке:
// somewhere inside of an async function ...
let audioWorkletNode;
try {
audioWorkletNode = new AudioWorkletNode(audioContext, 'my-processor');
} catch (err) {
await audioContext.audioWorklet.addModule('./worklet.js');
audioWorkletNode = new AudioWorkletNode(audioContext, 'my-processor');
}
Код использует блок try
/ catch
, но он по крайней мере не загружает файл JS, если он уже был загружен ранее.