Як працює async/await у Javascript?
Ғылым және технология
Async/await в JavaScript - це синтаксичний цукор для роботи з промісами, який дозволяє писати асинхронний код, що виглядає як синхронний. async використовується перед функцією, щоб вона повертала проміс, а await дозволяє зупинити виконання функції, доки проміс не буде виконано або відхилено. Це робить код більш чистим і зрозумілим.
0:00 async-await (Вступ)
0:17 Що таке async
0:46 Що насправді повертає асинхронна функція.
1:39 Як працює await?
Пікірлер: 11
Вийшло класне відео про Функції генератори та ітератори у JS - kzread.info/dash/bejne/qGiqtLWTeM6vkps.html
Подивився, що є на каналі, всі про біль js розробника)) Підписався, дякую)
@WebxInUa
22 күн бұрын
Дякую 🤩🫶
є ще елегантніший спосіб щоб обходитись без врапера try/catch. Наприклад: const result = await myAction().catch(() => null); в такому прикладі result буде null при реджекті проміса
👍👍👍
Я думав: Де я => Початок => Кінець => Promise(але це не так перевірив себе потім). Дякую за цікаве відео. Я здогадуюсь чому так, але було б цікаво коротенький розбір по цьому))
@WebxInUa
Ай бұрын
Річ у тім, що ми не викликали example із ключовим словом await(), інтерпретаор JS відпрацював наступний чином - виклик функції без await (Тобто очікувати на асинхронні дії у тілі функції не будем) АЛЕ - Так як у середині є синхронна оперція console.log('початок'), то вона відпрацює одразу, далі Проміс - це асинхронна операція, відповідно вона буде виконана через сек, таким чином ми виходимо з функції, і викликаємо наступну синхронну операцію console.log('Де я?') згодом Після 1 сек виконується блок setTimeout а далі наступний рядок після нього console.log("Кінець") ...... У JS є таке поняття FIFO (First In First Out) це про те як виконується код із стеку. Доречі SetTimeout це асинхронна операція, у неї є окреме середовище де вона простими словам відбуває свій час очікування перед виконаням у стеці виклику, назв WebAPI. У мене є відео про EventLoop там якраз я розкриваю деталі роботи синхронного та асинхронного коду kzread.info/dash/bejne/pKqlybGBZdbdgLg.html
Ми спочатку викликаємо async функцію , там у нас є console.log("Початок"); . В нас там проміс який ми чекаємо (Тому і не виводиться console.log("Кінець");). Так як async функція example() викликається без await то ми не зупиняємось і йдемо далі . Тому викликається console.log("Де я?"); . І через 1 сек. викликається console.log("Кінець"); Консоль: Початок -> Де я ? -> Кінець
@WebxInUa
Ай бұрын
Все вірно 🙌
Нарешті українською! Дякую тобі!
@WebxInUa
Ай бұрын
Вам дякую 🫶