є ще елегантніший спосіб щоб обходитись без врапера try/catch. Наприклад: const result = await myAction().catch(() => null); в такому прикладі result буде null при реджекті проміса
Я думав: Де я => Початок => Кінець => Promise(але це не так перевірив себе потім). Дякую за цікаве відео. Я здогадуюсь чому так, але було б цікаво коротенький розбір по цьому))
Річ у тім, що ми не викликали example із ключовим словом await(), інтерпретаор JS відпрацював наступний чином - виклик функції без await (Тобто очікувати на асинхронні дії у тілі функції не будем) АЛЕ - Так як у середині є синхронна оперція console.log('початок'), то вона відпрацює одразу, далі Проміс - це асинхронна операція, відповідно вона буде виконана через сек, таким чином ми виходимо з функції, і викликаємо наступну синхронну операцію console.log('Де я?') згодом Після 1 сек виконується блок setTimeout а далі наступний рядок після нього console.log("Кінець") ...... У JS є таке поняття FIFO (First In First Out) це про те як виконується код із стеку. Доречі SetTimeout це асинхронна операція, у неї є окреме середовище де вона простими словам відбуває свій час очікування перед виконаням у стеці виклику, назв WebAPI. У мене є відео про EventLoop там якраз я розкриваю деталі роботи синхронного та асинхронного коду th-cam.com/video/rvqgOH5swPU/w-d-xo.html
Ми спочатку викликаємо async функцію , там у нас є console.log("Початок"); . В нас там проміс який ми чекаємо (Тому і не виводиться console.log("Кінець");). Так як async функція example() викликається без await то ми не зупиняємось і йдемо далі . Тому викликається console.log("Де я?"); . І через 1 сек. викликається console.log("Кінець"); Консоль: Початок -> Де я ? -> Кінець
Вийшло класне відео про Функції генератори та ітератори у JS -
th-cam.com/video/v4vRSZHkIb8/w-d-xo.html
Подивився, що є на каналі, всі про біль js розробника))
Підписався, дякую)
Дякую 🤩🫶
є ще елегантніший спосіб щоб обходитись без врапера try/catch. Наприклад: const result = await myAction().catch(() => null); в такому прикладі result буде null при реджекті проміса
Я думав: Де я => Початок => Кінець => Promise(але це не так перевірив себе потім). Дякую за цікаве відео. Я здогадуюсь чому так, але було б цікаво коротенький розбір по цьому))
Річ у тім, що ми не викликали example із ключовим словом await(), інтерпретаор JS відпрацював наступний чином - виклик функції без await (Тобто очікувати на асинхронні дії у тілі функції не будем) АЛЕ - Так як у середині є синхронна оперція console.log('початок'), то вона відпрацює одразу, далі Проміс - це асинхронна операція, відповідно вона буде виконана через сек, таким чином ми виходимо з функції, і викликаємо наступну синхронну операцію console.log('Де я?')
згодом Після 1 сек виконується блок setTimeout
а далі наступний рядок після нього console.log("Кінець")
......
У JS є таке поняття FIFO (First In First Out) це про те як виконується код із стеку. Доречі SetTimeout це асинхронна операція, у неї є окреме середовище де вона простими словам відбуває свій час очікування перед виконаням у стеці виклику, назв WebAPI.
У мене є відео про EventLoop там якраз я розкриваю деталі роботи синхронного та асинхронного коду
th-cam.com/video/rvqgOH5swPU/w-d-xo.html
👍👍👍
Ми спочатку викликаємо async функцію , там у нас є console.log("Початок"); . В нас там проміс який ми чекаємо (Тому і не виводиться console.log("Кінець");). Так як async функція example() викликається без await то ми не зупиняємось і йдемо далі . Тому викликається console.log("Де я?"); . І через 1 сек. викликається console.log("Кінець");
Консоль:
Початок -> Де я ? -> Кінець
Все вірно 🙌
Нарешті українською! Дякую тобі!
Вам дякую 🫶