From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/asyncfunction/index.html | 166 +++++++++++++++++++++ .../asyncfunction/prototype/index.html | 55 +++++++ 2 files changed, 221 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html (limited to 'files/ru/web/javascript/reference/global_objects/asyncfunction') diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..b1475ad6e3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,166 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +
{{JSRef}}
+ +

Конструктор AsyncFunction создает новый объект {{jsxref("Statements/async_function", "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 .
+
+ +

Описание

+ +

Объекты {{jsxref("Statements/async_function", "async function")}}, созданные с помощью AsyncFunction constructor  будут распарсены в момент, когда функция создается. Это менее эффективно, чем объявлять асинхронную функцию с помощью {{jsxref("Statements/async_function", "async function expression")}} и вызывать ее внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.

+ +

Все аргументы, переданные функции, рассматриваются как имена идентификаторов параметров в создаваемой функции в том порядке, в котором они передаются.

+ +
+

Обратите внимание: объекты {{jsxref("Statements/async_function", "async functions")}} созданные с помощью AsyncFunction constructor , не создают замыкания на создающие их контексты; Они всегда создаются в глобальной области видимости. При их запуске они смогут получить доступ только к своим локальным переменным и к глобальным переменным, но не имеют доступа к тем областям видимости, в которых был вызван AsyncFunction constructor. Это отличается от использования {{jsxref("Global_Objects/eval", "eval")}} с кодом для async function. 

+
+ +

Вызов AsyncFunction constructor как функции (без использования оператора new ) имеет тот же эффект, что и вызов его как конструктора.

+ +

Свойства

+ +
+
AsyncFunction.length
+
Свойство length AsyncFunction constructor, значение которого равно 1.
+
{{jsxref("AsyncFunction.prototype")}}
+
Позволяет добавлять свойства ко всем объектам async function.
+
+ +

AsyncFunction prototype object

+ +

Свойства

+ +
{{page('/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Properties')}}
+ +

Экземпляры AsyncFunction

+ +

Экземпляры AsyncFunction наследуют методы и свойства от {{jsxref("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 секунды
+});
+
+ +

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

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Изначальное определение в ES2017.
+ +

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

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet Explorer EdgeOperaSafari (WebKit)
Базовая поддержка{{CompatChrome(55)}}{{CompatGeckoDesktop("52.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("52.0")}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}{{CompatChrome(55)}}
+
+ +

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

+ + diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html new file mode 100644 index 0000000000..9d0c21f241 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html @@ -0,0 +1,55 @@ +--- +title: AsyncFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +--- +
{{JSRef}}
+ +

Свойство AsyncFunction.prototype представляет прототип объекта  {{jsxref("AsyncFunction")}} .

+ +

Описание

+ +

Объект {{jsxref("AsyncFunction")}} наследуется от AsyncFunction.prototype. AsyncFunction.prototype не может быть модифицирован.

+ +

Свойства

+ +
+
AsyncFunction.constructor
+
Начальное значение {{jsxref("AsyncFunction")}}.
+
AsyncFunction.prototype[@@toStringTag]
+
Возвращает "AsyncFunction".
+
+ +

Specifications

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-constructor-prototype', 'AsyncFunction.prototype')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.AsyncFunction.prototype")}}

+
+ +

See also

+ + -- cgit v1.2.3-54-g00ecf