AsyncFunction

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Конструктор AsyncFunction создает новый объект async function. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.

Обратите внимание, что AsyncFunction не является глобальным объектом. Её можно получить, выполнив следующий код.

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.constructor
The initial value is AsyncFunction.
AsyncFunction.prototype[@@toStringTag]
Returns "AsyncFunction".

Экземпляры AsyncFunction

Экземпляры AsyncFunction наследуют методы и свойства от AsyncFunction.prototype. Как и для всех конструкторов, вы можете изменить объект-прототип конструктора, чтобы внести изменения во все экземпляры AsyncFunction.

Примеры

Создание async function с помощью AsyncFunction constructor

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 секунды
});

Спецификации

Спецификация Статус Комментарий
ECMAScript Latest Draft (ECMA-262)
Определение 'AsyncFunction object' в этой спецификации.
Черновик Изначальное определение в ES2017.

Совместимость с браузерами

Возможность Chrome Firefox (Gecko) Internet Explorer  Edge Opera Safari (WebKit)
Базовая поддержка 55 52.0 (52.0) ? ? 42 ?
Возможность Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Базовая поддержка ? ? 52.0 (52.0) ? 42 ? 55

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: Saiberbest
 Обновлялась последний раз: Saiberbest,