Skip to content

Commit

Permalink
[ru] update Web/JavaScript/Reference/Global_Objects/AsyncFunction t…
Browse files Browse the repository at this point in the history
…ranslation (#17550)

[ru] update 'Web/JavaScript/Reference/Global_Objects/AsyncFunction' translation
  • Loading branch information
leon-win authored Dec 19, 2023
1 parent c1263ca commit 8ebe89e
Showing 1 changed file with 25 additions and 65 deletions.
Original file line number Diff line number Diff line change
@@ -1,83 +1,43 @@
---
title: AsyncFunction
slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction
l10n:
sourceCommit: e01fd6206ce2fad2fe09a485bb2d3ceda53a62de
---

{{JSRef}}

**Конструктор `AsyncFunction`** создаёт новый объект {{jsxref("Statements/async_function", "async function")}}. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.
Объект **`AsyncFunction`** предоставляет методы для [асинхронных функций](/ru/docs/Web/JavaScript/Reference/Statements/async_function). В JavaScript каждая асинхронная функция фактически является объектом `AsyncFunction`.

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

```js
Object.getPrototypeOf(async function () {}).constructor;
const AsyncFunction = async function () {}.constructor;
```

## Синтаксис
`AsyncFunction` является подклассом {{jsxref("Function")}}.

```
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.
- {{jsxref("AsyncFunction/AsyncFunction", "AsyncFunction()")}}
- : Создаёт новый объект `AsyncFunction`.

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

## Свойства
_Также наследует свойства своего родителя {{jsxref("Function")}}_.

- **`AsyncFunction.length`**
- : Свойство length AsyncFunction constructor, значение которого равно 1.
- {{jsxref("AsyncFunction.prototype")}}
- : Позволяет добавлять свойства ко всем объектам async function.
Эти свойства определены в `AsyncFunction.prototype` и есть у всех экземпляров `AsyncFunction`.

## `AsyncFunction` prototype object
- {{jsxref("Object/constructor", "AsyncFunction.prototype.constructor")}}
- : Функция-конструктор, создающая экземпляр объекта. Для экземпляров `AsyncFunction` начальным значением является конструктор {{jsxref("AsyncFunction/AsyncFunction", "AsyncFunction")}}.
- `AsyncFunction.prototype[@@toStringTag]`
- : Начальным значением свойства [`@@toStringTag`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) является строка `"AsyncFunction"`. Это свойство используется в {{jsxref("Object.prototype.toString()")}}.

### Свойства
> **Примечание:** Экземпляры `AsyncFunction` не имею свойства [`prototype`](/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype).
{{page('/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Properties')}}
## Методы экземпляра

## `Экземпляры AsyncFunction`

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

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

Expand All @@ -89,9 +49,9 @@ a(10, 20).then((v) => {

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

- {{jsxref("Statements/async_function", "async function function")}}
- {{jsxref("Operators/async_function", "async function expression")}}
- {{jsxref("Global_Objects/Function", "Function")}}
- {{jsxref("Statements/function", "function statement")}}
- {{jsxref("Operators/function", "function expression")}}
- {{jsxref("Functions_and_function_scope", "Functions and function scope", "", 1)}}
- [`async function`](/ru/docs/Web/JavaScript/Reference/Statements/async_function)
- [Выражение `async function`](/ru/docs/Web/JavaScript/Reference/Operators/async_function)
- {{jsxref("Function")}}
- {{jsxref("AsyncGeneratorFunction")}}
- {{jsxref("GeneratorFunction")}}
- {{jsxref("Functions", "Functions", "", 1)}}

0 comments on commit 8ebe89e

Please sign in to comment.