AsyncFunction
Конструктор AsyncFunction
создаёт новый объект async function
. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.
Обратите внимание, что AsyncFunction не является глобальным объектом. Её можно получить, выполнив следующий код.
js
Object.getPrototypeOf(async function () {}).constructor;
Синтаксис
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
Параметры
arg1, arg2, ... argN
-
Имена, используемые функцией как формальные имена аргументов. Каждое имя должно быть строкой, которая соответствует действительному идентификатору JavaScript или списку таких строк, разделённых запятой; например, "
x
", "theValue
", или "a,b
". functionBody
-
Строка, содержащая в себе определение функции в исходном коде JavaScript .
Описание
Объекты async function
, созданные с помощью AsyncFunction constructor будут распарсены в момент, когда функция создаётся. Это менее эффективно, чем объявлять асинхронную функцию с помощью async function expression
и вызывать её внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.
Все аргументы, переданные функции, рассматриваются как имена идентификаторов параметров в создаваемой функции в том порядке, в котором они передаются.
Примечание: объекты async functions
созданные с помощью AsyncFunction constructor , не создают замыкания на создающие их контексты; Они всегда создаются в глобальной области видимости. При их запуске они смогут получить доступ только к своим локальным переменным и к глобальным переменным, но не имеют доступа к тем областям видимости, в которых был вызван AsyncFunction constructor. Это отличается от использования eval
с кодом для async function.
Вызов AsyncFunction constructor как функции (без использования оператора new ) имеет тот же эффект, что и вызов его как конструктора.
Свойства
AsyncFunction.length
-
Свойство length AsyncFunction constructor, значение которого равно 1.
AsyncFunction.prototype
-
Позволяет добавлять свойства ко всем объектам async function.
AsyncFunction
prototype object
Свойства
Экземпляры AsyncFunction
Экземпляры AsyncFunction
наследуют методы и свойства от AsyncFunction.prototype
. Как и для всех конструкторов, вы можете изменить объект-прототип конструктора, чтобы внести изменения во все экземпляры AsyncFunction
.
Примеры
Создание async function с помощью AsyncFunction
constructor
js
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
var AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;
var a = new AsyncFunction(
"a",
"b",
"return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);
a(10, 20).then((v) => {
console.log(v); // напечатает 30 через 4 секунды
});
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-async-function-objects |
Совместимость с браузерами
BCD tables only load in the browser