TLA isn't a footgun anymore
Explanation
TLA: top-level-await
这个提案经过两年的”激烈争辩“还是进入到了 stage3。
可以在提议链接中了解提议的初因,以及目前进度受到阻碍的细节
之所以能进入这个阶段主要是解决(或者规避)了 Rich-Harris 提出的初期反对意见 Top-level await is a footgun
Harris 最新的更新也写明了他完全支持目前提案的新方向
简单讲 TLA 的新方向解决了3个主要的问题:
- 具有 TLA 的模块不会阻止同级执行,也就是同级不会阻碍
- 只支持 ES-Module,规避了 CJS 或普通 script 会出现的问题
- 不会阻碍资源加载,因为 TLA 在模块的执行阶段,此时已完成加载
另外 之前没有 TLA,比较 hack 的代替方法是 (async main(){...}())
,不会有阻塞问题,但会对静态分析造成困难
目前 TLA 还有一些问题待解决