AsyncFunction 未定义,但 MDN 记录了它的用法
AsyncFunction is not defined, yet MDN documents it's usage
有一篇文章AsyncFunction - JavaScript on MDN。它显示以下片段:
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
然而在 Mozzila Firefox 55 和 Google Chrome 中,这个构造函数根本没有定义:
我发现 (async function() {}).constructor
确实是 AsyncFunction
,但为什么我在全局范围内看不到它?
如 Mozilla 文档中所述"Note that AsyncFunction is not a global object."
因此您不能像其他全局构造函数那样将其作为 window
对象的 属性 进行访问。它必须通过询问 async
函数的实例来获得:
来自文档:
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
文档本身很混乱,所以难怪人们也会感到困惑。
MDN 文档告诉我们 AsyncFunction 不是全局对象,但他们在 全局对象 参考中列出了它!糟糕!
这会导致意外行为。这有效:
> f1 = function () {};
[Function: f1]
> f1 instanceof Function
true
但事实并非如此:
> f2 = async function () {}
[AsyncFunction: f2]
> f2 instanceof AsyncFunction
ReferenceError: AsyncFunction is not defined
我写了一个 unexposed
模块,你可以使用:
它基本上像 Patrick 的回答中的示例一样工作,但您不必记住它。
另请参阅此问题以获取更多信息:
- How to know if a function is async?
有一篇文章AsyncFunction - JavaScript on MDN。它显示以下片段:
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
然而在 Mozzila Firefox 55 和 Google Chrome 中,这个构造函数根本没有定义:
我发现 (async function() {}).constructor
确实是 AsyncFunction
,但为什么我在全局范围内看不到它?
如 Mozilla 文档中所述"Note that AsyncFunction is not a global object."
因此您不能像其他全局构造函数那样将其作为 window
对象的 属性 进行访问。它必须通过询问 async
函数的实例来获得:
来自文档:
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
文档本身很混乱,所以难怪人们也会感到困惑。
MDN 文档告诉我们 AsyncFunction 不是全局对象,但他们在 全局对象 参考中列出了它!糟糕!
这会导致意外行为。这有效:
> f1 = function () {};
[Function: f1]
> f1 instanceof Function
true
但事实并非如此:
> f2 = async function () {}
[AsyncFunction: f2]
> f2 instanceof AsyncFunction
ReferenceError: AsyncFunction is not defined
我写了一个 unexposed
模块,你可以使用:
它基本上像 Patrick 的回答中的示例一样工作,但您不必记住它。
另请参阅此问题以获取更多信息:
- How to know if a function is async?