Перейти к содержимому

Промисы в JavaScript

Промисы в JavaScript — мощный инструмент для управления асинхронными операциями, позволяющий разработчикам писать более чистый и надежный код. Понимание того, как эффективно использовать промисы, необходимо любому разработчику, стремящемуся преуспеть в современной разработке на JavaScript.

Введение в промисы JavaScript

Промис в JavaScript представляет собой значение, которое может быть недоступно прямо сейчас, но будет доступно в какой-то момент в будущем. Он позволяет прикреплять обратные вызовы для обработки успешного выполнения или отказа асинхронной операции. Это значительное улучшение по сравнению со старыми методами, такими как вложенные обратные вызовы, которые часто называют «адом обратных вызовов».

Создание промиса

Для создания промиса используется конструктор Promise, который принимает функцию, известную как функция-исполнитель (executor). Аргументы resolve и reject в функции-исполнителе вы узнаете позже на этой странице.


Output appears here after Run.

Обработка результатов с помощью .then, .catch и .finally

После создания промиса вы можете использовать методы .then, .catch и .finally для обработки успешных результатов или отказов.

Метод then

Метод .then используется для планирования выполнения обратного вызова, когда промис будет успешно выполнен (resolved). Для успешного выполнения промиса должен быть вызван метод resolve. Аргумент, переданный в метод resolve, станет окончательным значением промиса.


Output appears here after Run.

В этом коде промис будет успешно выполнен только после завершения таймера на 1000 мс, и метод resolve будет вызван со значением "Done!".

Функция в части then выполняется только после вызова метода resolve.

Метод .catch

Метод .catch используется для обработки промиса в случае его отклонения (rejected). Это означает, что либо в блоке функции промиса возникнет ошибка, либо будет вызван метод reject.


Output appears here after Run.

Метод .finally

Метод .finally позволяет выполнить код после того, как промис будет урегулирован (settled), независимо от его результата.


Output appears here after Run.

Получение данных из API с помощью промисов

Этот пример показывает, как получить данные из удаленного API с помощью промисов.


Output appears here after Run.

Цепочка промисов

Цепочка промисов — это мощная функция, которая позволяет связывать несколько асинхронных операций друг с другом. Подробнее см. в статье JavaScript: Промисы и цепочки.


Output appears here after Run.

Интеграция async/await с промисами JavaScript

Эффективное использование async/await может упростить обработку асинхронных операций, сделав ваш код чище и понятнее, сохраняя при этом всю мощь промисов JavaScript. Вы узнаете о нем больше в разделе JavaScript async/await, но вот простой пример.


Output appears here after Run.

Заключение

Умение работать с промисами в JavaScript критически важно для любого разработчика, стремящегося эффективно управлять асинхронными операциями. Понимание и использование описанных выше шаблонов и техник позволит разработчикам обеспечить читаемость, удобство поддержки и надежность своего кода на JavaScript.

Практика

Что такое промис в JavaScript?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.