Загрузка модуля WebAssembly только один раз / Singleton - PullRequest
1 голос
/ 02 апреля 2019

Я хочу использовать модули WebAssembly в моем приложении React. Модули загружаются при запуске приложения. Теперь я хочу повторно использовать этот модуль wasm в другом модуле Javascript.

Как я могу использовать эти модули wasm в других модулях JS? Мне действительно нужно снова загружать модули?

Загрузка wasm в основной модуль:

Promise.all([
    import("webassembly-tests-rust")
    //...
])
    .then(modules => {
        // how to store the module to make it available in other modules?
        wasm["rust"] = modules[0];
        //...
    })

Другой модуль:

wasm.rust.somefunction();

1 Ответ

0 голосов
/ 11 апреля 2019

Будет ли это работать так?

wasm.js

let wasm
export const getWasm = () =>
  wasm
    ? Promise.resolve(wasm)
    : import('webassembly-tests-rust').then(_wasm => {
        wasm = _wasm;
        return wasm;
      })

module.js

import getWasm from 'wasm.js'
Promise.all([
    getWasm
    //...
])
    .then(modules => {
        modules[0].someFunction = () => console.log('foo')
        //...
    })

Другой модуль:

import getWasm from 'wasm.js'
getWasm().then(wasm => wasm.somefunction()) // console.log('foo')
...