【发布时间】:2019-03-20 01:38:03
【问题描述】:
这里有一个新手问题。我需要在我的 Typescript 文件的顶层声明 const,以便下面的所有函数都可以访问它。问题是我需要分配给这个常量的值被异步函数返回,这就是我卡住的地方。无法从顶层调用异步函数 - 我可以这样做,但在这种情况下,常量不再位于顶层,其他函数无法访问。
(async () => {
const myConst = await asyncFunction(params);
})();
另一种选择是使用 let 而不是 const,就像这样,但我宁愿在上面放 const
let myConst;
(async () => {
myConst = await asyncFunction(params);
})();
你能给我建议吗?有什么办法可以让我为全局范围声明 const 并根据 async 函数为其分配一个值?
非常感谢:)
【问题讨论】:
-
一般你想做的并没有真正的用处,因为全局变量只有在异步操作完成后才可用。
-
这是设计使然。您不应该以这种方式混合同步和异步代码。如果您将来需要该变量,您可以使用 Promise 来描述它,而您通常这样做的方式是使用
async函数。这样您就可以在值上await以确保它存在(与您当前的方法相反,您只能猜测或轮询) -
要么使用承诺,要么将需要该常量的代码专门包装在异步块中。据我所知,这是有意设计的。
标签: javascript typescript asynchronous scope constants