Об'єкти Promise в JavaScript

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Який з наступних станів не є одним із станів Promise в JavaScript?

  • Fulfilled (виконано)
  • Pending (очікування)
  • Processing (обробка) (correct)
  • Rejected (відхилено)

Яка функція використовується для переведення Promise зі стану очікування (pending) у стан виконано (fulfilled)?

  • `catch()`
  • `resolve()` (correct)
  • `finally()`
  • `reject()`

Який метод використовується для обробки відхилень Promise?

  • `then()`
  • `catch()` (correct)
  • `finally()`
  • `resolve()`

Який метод Promise виконує код незалежно від того, чи був Promise виконаний чи відхилений?

<p><code>finally()</code> (B)</p> Signup and view all the answers

Яка основна перевага використання Promises перед колбеками для обробки асинхронних операцій?

<p>Promises допомагають уникнути «callback hell» та роблять код більш читабельним. (D)</p> Signup and view all the answers

Що повертає метод then()?

<p>Новий Promise (C)</p> Signup and view all the answers

Яка різниця між Promise.resolve(value) та Promise.reject(reason)?

<p><code>Promise.resolve</code> створює Promise, який відразу виконується зі значенням <code>value</code>, а <code>Promise.reject</code> - Promise, який відразу відхиляється з причиною <code>reason</code>. (C)</p> Signup and view all the answers

Що станеться, якщо один з Promise, переданих до Promise.all(), буде відхилено?

<p><code>Promise.all()</code> відразу відхилиться з причиною відхилення першого відхиленого Promise. (C)</p> Signup and view all the answers

В чому різниця між Promise.all() і Promise.allSettled()?

<p><code>Promise.all()</code> чекає на виконання всіх Promise, і відхиляється, якщо хоча б один з них відхилився, в той час як <code>Promise.allSettled()</code> чекає на завершення всіх Promise (виконання або відхилення) і повертає масив об'єктів з інформацією про кожен Promise. (B)</p> Signup and view all the answers

Яке призначення методу Promise.race()?

<p>Повернути Promise, який виконається або буде відхилений, як тільки перший з переданих Promise виконається або буде відхилений. (A)</p> Signup and view all the answers

Яку проблему вирішує використання ключових слів async та await?

<p>Вони роблять асинхронний код більш читабельним і схожим на синхронний. (B)</p> Signup and view all the answers

Де можна обробляти помилки в async/await коді?

<p>За допомогою методу <code>catch()</code> Promise або всередині блоку <code>try...catch</code>. (C)</p> Signup and view all the answers

Що станеться, якщо в async функції не обробити відхилення Promise?

<p>Виникне помилка не обробленого відхилення Promise, що може призвести до неочікуваної поведінки. (C)</p> Signup and view all the answers

Який з наступних варіантів найкраще описує призначення функції Promise.any()?

<p>Повертає Promise, який виконується, коли хоча б один з переданих Promise виконано, або відхиляється з <code>AggregateError</code>, якщо всі Promise відхилені. (A)</p> Signup and view all the answers

Яке з наступних тверджень правильно описує ланцюжок Promise?

<p>Ланцюжок Promise дозволяє послідовно виконувати асинхронні операції, де результат однієї операції передається наступній. (C)</p> Signup and view all the answers

У контексті Promise, коли важливо використовувати Promise.allSettled() замість Promise.all()?

<p>Коли важливо знати результат кожної асинхронної операції, незалежно від того, чи була вона успішною, чи зазнала невдачі. (A)</p> Signup and view all the answers

Який з наведених нижче варіантів найкраще описує, як працює ключове слово await у JavaScript?

<p><code>await</code> використовується для призупинення виконання асинхронної функції до тих пір, поки Promise не буде виконано, і повертає результат Promise. (C)</p> Signup and view all the answers

Що таке AggregateError і в якому випадку він виникає при роботі з Promise?

<p><code>AggregateError</code> - це помилка, яка виникає в <code>Promise.any()</code>, коли всі передані Promise відхилені. (A)</p> Signup and view all the answers

Як можна запобігти проблемам, пов'язаним з необробленими відхиленнями Promise (unhandled rejections) у JavaScript?

<p>Налаштувати глобальний обробник подій для <code>unhandledrejection</code> та забезпечити обробку кожної можливої помилки в ланцюжках Promise з використанням <code>.catch()</code> або <code>try...catch</code>. (C)</p> Signup and view all the answers

Flashcards

Promise в JavaScript

Об'єкт, що представляє завершення (або невдачу) асинхронної операції.

Promise: стан pending

Стан очікування, операція ще не завершена.

Promise: стан fulfilled

Операція успішно завершена.

Promise: стан rejected

Операція завершилася з помилкою.

Signup and view all the flashcards

Функція resolve

Функція, що переводить promise в стан fulfilled, передаючи значення методу then.

Signup and view all the flashcards

Функція reject

Функція, що переводить promise в стан rejected, передаючи причину помилки методу catch.

Signup and view all the flashcards

Метод then(onFulfilled)

Метод для обробки успішного виконання promise.

Signup and view all the flashcards

Метод catch(onRejected)

Метод для обробки відхилення promise.

Signup and view all the flashcards

Метод finally(onFinally)

Метод для виконання коду незалежно від результату promise (успіх чи помилка).

Signup and view all the flashcards

Promise.resolve(value)

Метод, що створює promise, який одразу переходить в стан fulfilled із заданим значенням.

Signup and view all the flashcards

Promise.reject(reason)

Метод, що створює promise, який одразу переходить в стан rejected із заданою причиною.

Signup and view all the flashcards

Promise.all(iterable)

Метод, що приймає iterable (наприклад, масив) promise та повертає promise, який переходить в стан fulfilled, коли всі вхідні promise перейшли в стан fulfilled.

Signup and view all the flashcards

Promise.allSettled(iterable)

Метод, що приймає iterable promise та повертає promise, який переходить в стан fulfilled, коли всі вхідні promise завершені (fulfilled або rejected).

Signup and view all the flashcards

Promise.race(iterable)

Метод, що приймає iterable promise та повертає promise, який переходить в стан fulfilled або rejected, як тільки один з вхідних promise перейде у відповідний стан.

Signup and view all the flashcards

Promise.any(iterable)

Метод, що приймає iterable promise та повертає promise, який переходить в стан fulfilled, як тільки один з вхідних promise перейде в цей стан. Якщо всі promise відхилені, повертає AggregateError.

Signup and view all the flashcards

Ключове слово async

Ключове слово для визначення асинхронної функції, яка неявно повертає promise.

Signup and view all the flashcards

Ключове слово await

Ключове слово, що використовується в async функціях для призупинення виконання до завершення promise.

Signup and view all the flashcards

Блок try...catch

Блок коду для обробки помилок у коді з використанням async/await.

Signup and view all the flashcards

Обробка помилок Promise

Обробка помилок у кожному ланцюжку promise для запобігання непередбачуваних відхилень.

Signup and view all the flashcards

Study Notes

  • Об'єкти Promise в JavaScript представляють собою кінцеве завершення (або невдачу) асинхронної операції.
  • Promise надає більш структурований спосіб обробки асинхронних операцій у порівнянні з колбеками, вирішуючи проблеми, такі як "callback hell".
  • Promise може перебувати в одному з трьох станів: очікування (pending), виконано (fulfilled / resolved) або відхилено (rejected).
  • Стан очікування (pending) є початковим станом, що означає, що операція ще триває.
  • Стан виконано (fulfilled) означає, що операція успішно завершена.
  • Стан відхилено (rejected) означає, що операція не вдалася.

Створення Promise

  • Promise створюються за допомогою конструктора new Promise().
  • Конструктор приймає функцію, яка називається "executor", що містить асинхронну операцію.
  • Функція "executor" отримує два аргументи: resolve і reject.
  • resolve — це функція, яка, коли її викликають, переводить promise зі стану очікування в стан виконано. Вона також передає значення методу then promise.
  • reject — це функція, яка, коли її викликають, переводить promise зі стану очікування в стан відхилено. Вона також передає причину (зазвичай об'єкт помилки) методу catch promise.

Методи Promise: then, catch і finally

  • then(onFulfilled, onRejected) використовується для обробки виконання promise.
  • then приймає два необов'язкових аргументи: onFulfilled і onRejected.
  • onFulfilled — це функція зворотного виклику, яка виконується, коли promise успішно виконано. Вона отримує виконане значення як аргумент.
  • onRejected — це функція зворотного виклику, яка виконується, коли promise відхилено. Вона отримує причину відхилення як аргумент.
  • catch(onRejected) використовується для обробки відхилень promise.
  • catch приймає один аргумент: onRejected, який є функцією зворотного виклику, що виконується, коли promise відхилено. Вона отримує причину відхилення як аргумент і є еквівалентною .then(null, onRejected).
  • finally(onFinally) використовується для виконання коду незалежно від того, чи promise виконано, чи відхилено.
  • finally приймає один аргумент: onFinally, який є функцією зворотного виклику, що виконується, коли promise завершено (виконано або відхилено). Вона не отримує жодних аргументів і зазвичай використовується для операцій очищення.

Ланцюжки Promise

  • Promise можна об'єднувати в ланцюжки за допомогою методу then.
  • Кожен метод then повертає новий promise, що дозволяє створити послідовність асинхронних операцій.
  • Якщо функція onFulfilled у методі then повертає значення, наступний метод then у ланцюжку отримає це значення.
  • Якщо функція onFulfilled повертає promise, наступний метод then чекатиме, поки цей promise буде виконано, перш ніж виконуватися.
  • Це дозволяє створювати складні асинхронні робочі процеси в читабельний і керований спосіб.

Promise.resolve() і Promise.reject()

  • Promise.resolve(value) створює promise, який негайно виконується з заданим значенням.
  • Promise.reject(reason) створює promise, який негайно відхиляється з заданою причиною.
  • Ці методи корисні для створення promise із синхронних значень або помилок.

Promise.all()

  • Promise.all(iterable) приймає ітерований об'єкт (iterable, наприклад, масив) promise як вхідні дані.
  • Він повертає один promise, який виконується, коли всі вхідні promise виконано.
  • Виконане значення — це масив, що містить виконані значення вхідних promise у тому самому порядку, що й у вхідному ітерованому об'єкті.
  • Якщо будь-який із вхідних promise відхилено, Promise.all() негайно відхиляється з причиною відхилення першого відхиленого promise.
  • Promise.all() корисний, коли потрібно виконати кілька асинхронних операцій паралельно та дочекатися завершення всіх їх перед продовженням.

Promise.allSettled()

  • Promise.allSettled(iterable) приймає ітерований об'єкт promise як вхідні дані.
  • Він повертає один promise, який виконується, коли всі вхідні promise завершено (виконано або відхилено).
  • Виконане значення — це масив об'єктів, кожен із яких описує результат promise.
  • Кожен об'єкт має властивість status, яка має значення "fulfilled" або "rejected".
  • Якщо статус має значення "fulfilled", об'єкт має властивість value, що містить виконане значення.
  • Якщо статус має значення "rejected", об'єкт має властивість reason, що містить причину відхилення.
  • Promise.allSettled() корисний, коли потрібно виконати кілька асинхронних операцій паралельно та потрібно знати результат кожної операції, незалежно від того, чи вони успішні, чи зазнають невдачі.

Promise.race()

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

Promise.any()

  • Promise.any(iterable) приймає ітерований об'єкт promise як вхідні дані.
  • Він повертає один promise, який виконується, як тільки перший із вхідних promise буде виконано.
  • Якщо всі вхідні promise відхилено, повернутий promise відхиляється з помилкою AggregateError, що містить усі причини відхилення.
  • Promise.any() корисний, коли потрібно виконати кілька асинхронних операцій і важливий лише успіх першої з них і потрібно обробити випадок, коли всі вони зазнають невдачі.

Async/Await

  • async і await — це синтаксичний цукор, побудований на основі promise, що полегшує написання й читання асинхронного коду.
  • Ключове слово async використовується для визначення асинхронної функції.
  • Асинхронна функція неявно повертає promise.
  • Ключове слово await використовується всередині асинхронної функції, щоб призупинити виконання функції, доки promise не буде виконано.
  • Ключове слово await можна використовувати лише всередині асинхронної функції.
  • Коли await використовується з promise, асинхронна функція чекає, поки promise буде виконано, а потім повертає виконане значення.
  • Якщо promise відхилено, вираз await створює помилку, яку можна перехопити за допомогою блоку try...catch.

Обробка помилок

  • Помилки в promise можна обробляти за допомогою методу catch або зворотного виклику onRejected у методі then.
  • Важливо обробляти помилки в кожному ланцюжку promise, щоб запобігти необробленим відхиленням.
  • У коді async/await помилки можна обробляти за допомогою блоків try...catch.
  • Необроблених відхилень слід уникати, оскільки вони можуть спричинити неочікувану поведінку.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

More Like This

Use Quizgecko on...
Browser
Browser