From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/operators/await/index.html | 126 +++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 files/uk/web/javascript/reference/operators/await/index.html (limited to 'files/uk/web/javascript/reference/operators/await/index.html') diff --git a/files/uk/web/javascript/reference/operators/await/index.html b/files/uk/web/javascript/reference/operators/await/index.html new file mode 100644 index 0000000000..ed8041347d --- /dev/null +++ b/files/uk/web/javascript/reference/operators/await/index.html @@ -0,0 +1,126 @@ +--- +title: await +slug: Web/JavaScript/Reference/Operators/await +tags: + - JavaScript + - Оператор + - Функція +translation_of: Web/JavaScript/Reference/Operators/await +--- +
{{jsSidebar("Operators")}}
+ +

Оператор await використовується для очікування на {{jsxref("Promise","проміс")}}. Він може використовуватись лише всередині {{jsxref("Statements/async_function", "асинхронної функції")}}.

+ +

Синтаксис

+ +
[rv] = await expression;
+ +
+
expression
+
{{jsxref("Promise","Проміс")}} чи будь-яке інше значення, якого треба дочекатись.
+
rv
+
+

Повертає значення виконаного проміса, або саме значення, якщо це не об'єкт Promise.

+
+
+ +

Опис

+ +

Вираз await спричиняє призупинення виконання асинхронної функції до встановлення об'єкта Promise (проміс) (тобто, до його вирішення або відхилення), а також відновлює виконання асинхронної функції після його завершення. Після відновлення, значенням виразу await є значення виконаного проміса.

+ +

Якщо проміс відхилено, вираз await викидає значення відхилення.

+ +

Якщо значення виразу, що стоїть після оператора await, не є об'єктом Promise, воно перетворюється на вирішений проміс.

+ +

Оператор await може розбивати хід виконання, дозволяючи коду, що викликав функцію з await, відновити виконання ще до того, як буде продовжене відкладене виконання функції з await. Після того, як await відкладає продовження своєї функції, якщо це перший оператор await, що виконується функцією, негайне виконання також продовжується поверненням у код, що викликав функцію, проміса у стані очікування для завершення виконання функції з await та для відновлення виконання коду, що її викликав.

+ +

Приклади

+ +

Якщо у вираз await був переданий проміс, то вираз чекає на виконання проміса та повертає значення, що є результатом виконання.

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+async function f1() {
+  var x = await resolveAfter2Seconds(10);
+  console.log(x); // 10
+}
+
+f1();
+
+ +

{{jsxref("Global_Objects/Promise/then", "Промісоподібні об'єкти")}} виконуватимуться так само.

+ +
async function f2() {
+  const thenable = {
+    then: function(resolve, _reject) {
+      resolve('вирішений!')
+    }
+  };
+  console.log(await thenable); // вирішений!
+}
+
+f2();
+ +

Якщо значенням є не проміс, він перетворює його на вирішений проміс та чекає на нього.

+ +
async function f3() {
+  var y = await 20;
+  console.log(y); // 20
+}
+
+f3();
+ +

Якщо проміс відхилено, викидається значення відхилення.

+ +
async function f4() {
+  try {
+    var z = await Promise.reject(30);
+  } catch(e) {
+    console.log(e); // 30
+  }
+}
+
+f4();
+ +

Обробити відхилений проміс без блока try.

+ +
var response = await promisedFunction().catch((err) => { console.log(err); });
+// якщо проміс відхилено, значенням response буде undefined
+
+ +

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

+ + + + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-async-function-definitions', 'async functions')}}
+ +

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

+ +
+ + +

{{Compat("javascript.operators.await")}}

+
+ +

Див. також

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