From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/asyncfunction/index.html | 128 +++++++++++++++++++++ .../asyncfunction/prototype/index.html | 59 ++++++++++ 2 files changed, 187 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/asyncfunction/prototype/index.html (limited to 'files/uk/web/javascript/reference/global_objects/asyncfunction') diff --git a/files/uk/web/javascript/reference/global_objects/asyncfunction/index.html b/files/uk/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..d07be9a438 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,128 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +tags: + - JavaScript + - Довідка + - Конструктор +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +
{{JSRef}}
+ +

Конструктор AsyncFunction створює новий об'єкт {{jsxref("Statements/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", "асинхронних функцій")}}, створені конструктором AsyncFunction, розбираються, коли створюється функція. Це менш ефективно, ніж оголосити асинхронну функцію через {{jsxref("Statements/async_function", "async function")}} та викликати її у вашому коді, тому що такі функції розбираються з рештою коду.

+ +

Усі аргументи, передані у функцію, сприймаються як імена ідентифікаторів параметрів функції, яка має бути створена, у тому порядку, в якому вони передані.

+ +
+

Заувага: {{jsxref("Statements/async_function", "асинхронні функції")}}, створені конструктором AsyncFunction, не утворюють замикань з контекстом свого створення; вони завжди створюються у глобальній області видимості.

+ +

Під час виконання вони матимуть доступ тільки до власних локальних змінних та до глобальних, але не до змінних області видимості, в якій був викликаний конструктор AsyncFunction.

+ +

Це відрізняється від використання {{jsxref("Global_Objects/eval", "eval")}} з кодом виразу асинхронної функції.

+
+ +

Використання конструктора AsyncFunction в якості функції (без оператора new) має такий самий ефект, як і виклик його в якості конструктора.

+ +

Властивості

+ +
+
AsyncFunction.length
+
Властивість length конструктора AsyncFunction (її значення дорівнює 1).
+
{{jsxref("AsyncFunction.prototype")}}
+
Дозволяє додавати властивості до усіх об'єктів асинхронних функцій.
+
+ +

Прототип AsyncFunction

+ +

Властивості

+ +
{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Властивості')}}
+ +

Екземпляри AsyncFunction

+ +

Екземпляри AsyncFunction успадковують методи та властивості від {{jsxref("AsyncFunction.prototype")}}.

+ +

Як в усіх конструкторах, ви можете змінювати об'єкт конструктора prototype, щоб вносити зміни до усіх екземплярів AsyncFunction.

+ +

Приклади

+ +

Створення асинхронної функції конструктором AsyncFunction

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+let AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
+
+let 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.
+ +

Сумісність з веб-переглядачами

+ +
+ + +

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

+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/uk/web/javascript/reference/global_objects/asyncfunction/prototype/index.html new file mode 100644 index 0000000000..c2df6c31db --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/asyncfunction/prototype/index.html @@ -0,0 +1,59 @@ +--- +title: AsyncFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +tags: + - JavaScript + - Властивість + - прототип +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".
+
+ +

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

+ + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-async-function-constructor-prototype', 'AsyncFunction.prototype')}}{{Spec2('ESDraft')}}Початкове визначення у ES2017.
+ +

Сумісність з веб-переглядачами

+ +
+ + +

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

+
+ +

Див. також

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