【发布时间】:2021-01-20 15:50:43
【问题描述】:
我一直在使用@zzzzBov 的fantastic loadScript() function 来使用Promises 加载JS 库。
但是,将所有加载的库的 Promises 链接在一起变得乏味和混乱。我想切换到async/await 解决方案,但是——因为loadScript() 函数不会返回我需要的可用库对象——这并不像使用.then() 那样简单。
函数返回一个负载Event,我await。所以我最初的方法是在 Promise 返回时定义一些无用的常量,然后在 if 语句中引用它们:
let loadedGlobalObject: any;
const lib1Loaded: Event = await loadScript(lib1URL);
const lib2Loaded: Event = await loadScript(lib2URL);
if (lib1Loaded && lib2Loaded) { // Makes this block dependent upon the await statements
loadedGlobalObject = (window as any).globalObject;
console.log(loadedGlobalObject);
}
这是正确的形式吗?我不知道如何“调用”await 语句; if 语句是我的第一个猜测。所以我想知道这是否是最好的解决方案,或者是否有更有效/被接受的技术(我知道我可以将 libXLoaded 常量替换为 if 语句,但我会考虑可读性)。
【问题讨论】:
-
你能用
Promise.all()吗? -
你需要那些“无用的常量”,尤其是 if 语句?
标签: javascript asynchronous async-await es6-promise