leo*_*ess 1 javascript typescript system.js import-maps
我有一个FooService通过import-map加载的 Singleton-Class 。我想(a)等待它并在各种异步函数中使用它,如下所示:
declare global {
interface Window {
System: System.Module
}
}
const module = window.System.import('@internal/foo-service')
const fooService = module.FooService
async function func1() {
await fooService.doBar()
.
.
}
async function func2() {
await fooService.doBar2()
.
.
}
Run Code Online (Sandbox Code Playgroud)
但我只能让它像这样工作:
declare global {
interface Window {
System: System.Module
}
}
async function getfooService() {
const module = await window.System.import('@internal/foo-service')
return module.FooService
}
function func1() {
getfooService().then(fooService => fooService .doBar())
.
.
}
function func2() {
getfooService().then(fooService => fooService.doBar2())
.
.
}
Run Code Online (Sandbox Code Playgroud)
每次我想使用它时,如何在不重新加载它的情况下实现这一点?
你的第一个猜测几乎没问题。请注意,module返回的 byimport是一个承诺,因此您需要将其用作
const fooService = window.System.import('@internal/foo-service').then(module =>
module.FooService
);
async function func1() {
(await fooService).doBar();
//^ ^
…
}
async function func2() {
(await fooService).doBar2();
//^ ^
…
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我建议避免使用FooService“模块对象”(或更糟的是,class),而只是export命名函数,以便您可以删除.then(module => module.FooService).
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |