Вы только что использовали new
с WebAssembly.Memory
в самой первой строке кода, верно? Это означает, что WebAssembly.Memory
- это не просто буфер, а экземпляр класса с методами.
Как правило, вы не можете напрямую передать функцию веб-работнику и не можете просто postMessage()
объект с методами ни Вместо этого вы должны передать его как Arraybuffer или Array.
var memory = new WebAssembly.Memory({initial:10});
var counter = new Worker("counter.js");
// Do not transfer wasm buffer by passing [memory.buffer]
// in the second argument.
// That will break the current WebAssembly program
// Since it will loose its ownership of the memory.
counter.postMessage(memory.buffer);
// A safer way is duplicating the buffer.
// By passing memory view instead of the buffer you will get a copy of the buffer.
var dupArr = new Uint32Array(memory);
counter.postMessage(dupArr, [dupArr]);
//other statements of the code...