There is an article AsyncFunction - JavaScript on MDN. It shows the following snippet:
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
Yet in both Mozzila Firefox 55 and Google Chrome, this constructor is not defined at all:
I found out that (async function() {}).constructor
really is AsyncFunction
, but why can't I see it in global scope?
As mentioned in the Mozilla docs "Note that AsyncFunction is not a global object."
Therefore you can't access it as a property of the
window
object like other global constructors. It must be obtained by interrogating an instance of anasync
function:From the docs:
The documentation itself is confused so it's no wonder that people get confused as well.
MDN docs tell us that AsyncFunction is not a global object, and yet they list it in the Global Objects reference! Oops!
This leads to unexpected behavior. This works:
But this doesn't:
I wrote an
unexposed
module that you can use:It basically works like the example in the answer by Patrick but you don't have to remember it.
See also this question for more info: