diff --git a/files/uk/web/javascript/reference/statements/async_function/index.md b/files/uk/web/javascript/reference/statements/async_function/index.md index 6493a03eff..57bec55fe5 100644 --- a/files/uk/web/javascript/reference/statements/async_function/index.md +++ b/files/uk/web/javascript/reference/statements/async_function/index.md @@ -1,5 +1,5 @@ --- -title: Асинхронна функція +title: async function slug: Web/JavaScript/Reference/Statements/async_function tags: - Example @@ -12,7 +12,7 @@ browser-compat: javascript.statements.async_function {{jsSidebar("Statements")}} -Асинхронна функція - це функція, що оголошена з ключовим словом `async`, і всередині якої дозволене вживання ключового слова `await`. Ключові слова `async` та `await` дають змогу записувати асинхронну (засновану на промісах) поведінку в чистішому стилі, уникаючи необхідності явно задавати ланцюжки промісів. +Оголошення **`async function`** оголошує асинхронну функцію, всередині тіла якої дозволене вживання ключового слова `await`. Ключові слова `async` та `await` дають змогу записувати асинхронну (засновану на промісах) поведінку в чистішому стилі, уникаючи необхідності явно задавати ланцюжки промісів. Асинхронні функції також можна оголошувати {{jsxref("Operators/async_function", "як вирази", "", 1)}}. @@ -127,10 +127,10 @@ function foo() { ```js async function foo() { const result1 = await new Promise((resolve) => - setTimeout(() => resolve('1')), + setTimeout(() => resolve("1")) ); const result2 = await new Promise((resolve) => - setTimeout(() => resolve('2')), + setTimeout(() => resolve("2")) ); } foo(); @@ -142,40 +142,42 @@ foo(); ```js async function foo() { - const p1 = new Promise((resolve) => setTimeout(() => resolve('1'), 1000)); - const p2 = new Promise((_, reject) => setTimeout(() => reject('2'), 500)); + const p1 = new Promise((resolve) => setTimeout(() => resolve("1"), 1000)); + const p2 = new Promise((_, reject) => setTimeout(() => reject("2"), 500)); const results = [await p1, await p2]; // Так робити не слід! Натомість краще вжити Promise.all чи Promise.allSettled. } foo().catch(() => {}); // Спроба проковтнути всі помилки... ``` +Оголошення `async function` [піднімаються](/uk/docs/Glossary/Hoisting) нагору своєї області видимості й можуть викликатися на всьому її протязі. + ## Приклади ### Асинхронні функції та порядок виконання ```js function resolveAfter2Seconds() { - console.log('початок повільного промісу'); + console.log("початок повільного промісу"); return new Promise((resolve) => { setTimeout(() => { - resolve('повільно'); - console.log('повільний проміс виконано'); + resolve("повільно"); + console.log("повільний проміс виконано"); }, 2000); }); } function resolveAfter1Second() { - console.log('початок швидкого промісу'); + console.log("початок швидкого промісу"); return new Promise((resolve) => { setTimeout(() => { - resolve('шкидко'); - console.log('швидкий проміс виконано'); + resolve("шкидко"); + console.log("швидкий проміс виконано"); }, 1000); }); } async function sequentialStart() { - console.log('==ПОСЛІДОВНИЙ ПОЧАТОК=='); + console.log("==ПОСЛІДОВНИЙ ПОЧАТОК=="); // 1. Виконання підходить до цього місця майже миттєво const slow = await resolveAfter2Seconds(); @@ -201,7 +203,7 @@ function concurrentPromise() { (messages) => { console.log(messages[0]); // повільно console.log(messages[1]); // швидко - }, + } ); }