JavaScript не видит переменную

Рейтинг: 0Ответов: 1Опубликовано: 07.06.2023
const go = new Go();
WebAssembly.instantiateStreaming(
  fetch("build.wasm"), 
  go.importObject).then((result) => {
    mod = result.module;
    inst = result.instance;
  }
);
inst.initGrid(10, 10);
drawGrid();

введите сюда описание изображения

есть адекватная причина почему JS не видит эту переменную?

Ответы

▲ 0

Судя по тому коду который Вы предоставили, есть предположение что инициализация запаздывает из-за асинхронного метода, соответсвенно две нижние строки (или одну) нужно дописать в цепочку вызова.

const go = new Go();
WebAssembly.instantiateStreaming(fetch("build.wasm"), go.importObject)
.then((result) => {
   mod = result.module;
   inst = result.instance;  // присваиваем
})
.then(() => {
   inst.initGrid(10, 10);   // используем
   drawGrid();
});

Если не критично можно вообще обойтись одним then либо использовать async/await:

async function run(){
  const go = new Go();
  const result = await webAssembly.instantiateStreaming(fetch("build.wasm"), go.importObject)
  mod = result.module;
  inst = result.instance;  // присваиваем
  inst.initGrid(10, 10);   // используем
  drawGrid();
}