Я остановился на одном из трех методов:
@ Метод Тима (принятый ответ): включите импорт в свойствах класса и await
во время конструктора.
Но: при сохранении импорта в каждом экземпляре могут быть накладные расходы.
await
в каждом методе класса для определения импорта, определенного там:
export class Something {
static async from_X() {
const libEd = await loadLibProm();
return libEd.genFromX();
}
async do_Y() {
const libEd = await loadLibProm();
return libEd.doY();
}
}
Но: API класса теперь все асин c и более неудобно в использовании.
Предварительная загрузка импорта при запуске кода. И надеемся, что загрузка будет завершена при вызове класса.
let libEd: typeof import("../../.cache/ed25519wars/index.js");
async function loadLibProm(): Promise<
typeof import("../../.cache/ed25519wars/index.js")
> {
libEd = await import("../../.cache/ed25519wars/index.js");
return libEd;
}
loadLibProm(); // this somehow starts running the promise ?? wut ? Anyways that's what we want
export class Something {
static from_X() {
return libEd.genFromX();
}
do_Y() {
return libEd.doY();
}
}
Но: это требует лучшей обработки ошибок для случая, когда экземпляр класса создан до завершения импорта / после сбоя импорта.