[ITEM 4] QUESTION: Що таке Promise?
Promise або проміс у JavaScript — це спеціальний об'єкт, який служить для представлення успішного або невдалиго завершення асинхронної операції, а також її результуючого значення. Проміс можна уявити як обіцянку повернути якийсь результат у майбутньому: ви не отримуєте дані моментально, але знаєте, що вони з'являться пізніше, або отримаєте повідомлення про помилку.
У будь-який момент часу проміс перебуває в одному з трьох можливих станів. Початковим станом є pending або очікування, коли асинхронне завдання ще виконується, і результат поки невідомий. Якщо операція завершується успішно, проміс переходить у стан fulfilled або виконано, повертаючи підсумкове значення. У разі виникнення помилки проміс переходить у стан rejected або відхилено, повертаючи причину збою. Важливо зазначити, що після того, як проміс перейшов у стан fulfilled або rejected, його статус уже ніколи не зможе змінитися.
Для роботи з результатами промісів використовуються спеціальні методи екземпляра: then(), catch() та finally(). Метод then() приймає дві функції зворотного виклику: перша виконується при успішному виконанні промісу, а друга — при його відхиленні. Метод catch() є зручним синтаксичним цукром для обробки помилок і викликається, якщо проміс був відхилений. Метод finally() виконується в будь-якому випадку після завершення роботи промісу, незалежно від його успіху чи неуспіху, що зручно для очищення ресурсів або приховування індикаторів завантаження.
Головною перевагою промісів перед старими колбеками є їхня здатність до ланцюжків або чейнінгу. Ви можете викликати метод then() послідовно, передаючи результат однієї асинхронної операції на вхід наступній. Це дозволяє писати чистий, плаский і легко читаваний код, повністю уникаючи проблеми глибокої вкладеності функцій.