【发布时间】:2019-01-02 15:31:41
【问题描述】:
我正在尝试在 nodejs REPL 中的 全局范围 上做类似的事情。根据我的理解,以下两个陈述都是有效的。 see docs
let x = await Promise.resolve(2);
let y = await 2;
但是,这两个语句都引发了错误。
有人可以解释为什么吗? 我的节点版本是 v8.9.4
【问题讨论】:
-
为什么?因为这就是
async/await的设计方式。如果您想了解为什么要这样设计,它会很复杂,但这与 Javascript 的单线程事件驱动性质以及它们在引擎的一个主要版本中可以吸收多少变化有关。而且,假设模块是同步加载的,顶级await会导致该假设出现各种问题。将你自己的async包装器放在你想使用await的东西上。 -
您不会,或者您等待top-level async 引起一系列问题。
-
您可以编写自己的 REPL 来包装 AIiFE 中输入的所有代码。
标签: javascript node.js ecmascript-6 es6-promise