Как передать функцию в JS worklet после вызова сообщения?

#javascript #audio-worklet

#javascript #аудио-worklet

Вопрос:

Мне нужно, чтобы мой worklet использовал функцию, которая находится в вызывающем TS-файле. Поскольку в postMessage разрешены только строки и числа. Мне трудно передать функцию. Возможно ли это вообще?

calling.ts

         // processAudio is the function (This is how i send data to worklet function)
        this.socketWorkletNode.port.postMessage({
            type: 'setState', state: state,
            processAudio: this.filterFunctions.processAudio
        });
  

worklet.js

 class audio_process_worklet {
  ...
  handleMessage_(event) {
        // If process function is available then set it in the class
        if(event.data.processAudio) {
            this.processedData = event.data.processAudio(this.audioData);
        }
  }
  ...
}
  

Подробнее: причина, по которой мне нужно передать функцию, заключается в том, что это функция, которую я получил через WebAssembly. На самом деле это функция, написанная в коде C. Я скомпилировал его как файл WASM с помощью компилятора emcc и передал файл с сервера. Используя модуль WebAssembly в браузере, я получаю функцию.

Комментарии:

1. Вам нужно будет включить вашу WebAssembly как часть кода, загружаемого в worklet при его создании.

2. Я довольно новичок в worklets и WebAssembly. У вас есть какой-нибудь пример, как это можно сделать? Я бы мне очень помог. Я попытался запустить WebAssembly внутри самого worklet. Но он не запускается, поскольку он сказал, что он не определен. Но в соответствии с JS они доступны во всем мире, верно!!!