Joz*_*zef 1 javascript scope asynchronous constants typescript
这里有一个新手问题。我需要在我的 Typescript 文件的顶层声明 const,所以它可以被下面的所有函数访问。问题是我需要分配给这个常量的值被异步函数返回,这就是我卡住的地方。不能从顶层调用异步函数——我可以做这样的事情,但在这种情况下,常量不再在顶层,其他函数无法访问。
(async () => {
const myConst = await asyncFunction(params);
})();
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 let 而不是 const,就像这样,但我宁愿在那里使用 const
let myConst;
(async () => {
myConst = await asyncFunction(params);
})();
Run Code Online (Sandbox Code Playgroud)
你能给我建议吗?有没有办法摆脱它,以便我可以为全局范围声明 const 并根据异步函数为其分配一个值?
非常感谢 :)
在顶级变量中使用异步结果是有问题的,因为当模块中的函数尝试读取值时,无法保证结果准备就绪。在我看来,正确且安全的方法是为顶级变量分配一个承诺,并使任何读取该值await的函数成为结果:
const myConst = asyncFunction(params);
async function example() {
doStuff(await myConst);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果将异步结果放在顶级变量中很重要,并且您有某种方法可以保证该值在读取之前准备好,那么我会接受您的let分配。const在这种情况下,我认为没有什么好方法可以使变量 a 。
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |