Обещание JavaScript

Что такое обещания JavaScript?

Обещания JavaScript стали проще

Обещание — это объект, представляющий возможное завершение или сбой асинхронной операции. — MDN (Сеть разработчиков Mozilla)

Хорошо, это действительно очень простое для понимания определение промиса. Но давайте попробуем рассказать еще проще.

Точно так же, как и в реальной жизни, когда вы даете кому-то обещание, вы берете на себя обязательство, что определенное обещание, которое было сделано, будет выполнено в будущем. Но когда приходит время, может случиться одно из двух, либо обещание было нарушено и вас предали, либо обещание было выполнено и доверие сохранилось и дружба окрепла. Теперь, после исполнения обещания, должны произойти две вещи. Первая — это стадия ожидания, учитывая, что в будущем обещание будет выполнено (ожидающая стадия), вторая — стадия, когда обещание отвергается (reject) или выполняется (resolve).

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

Состояние перед тем, как обещание становится разрешенным или отклоненным, называется Ожидание.

Обещание решить

Предположим, у нас есть следующий код:

Теперь в приведенном выше коде мы создаем обещание и передаем ему функцию, в которой будем выполнять некоторую асинхронную работу. Функция, которая передается объекту обещания, называется "функция-исполнитель". Функция-исполнитель отвечает за выполнение асинхронной работы, которая в конечном итоге разрешает или отклоняет обещание. Два аргумента разрешения и отклонения передаются обещанием функции-исполнителю.

В этом примере функция-исполнитель выполняет простую задачу ожидания в течение 1 секунды, а затем разрешает обещание со значением «Значение обещания».

Теперь, когда обещание разрешено, мы используем «.then()», чтобы получить разрешенное значение из обещания, а затем используем это значение в соответствии с нашими потребностями (например, в приведенном выше примере мы регистрируем значение в консоли).

Обещание отклонения

Теперь в некоторых случаях обещание может быть отклонено. Например, рассмотрим код ниже

В этом примере мы создаем обещание, которое будет отклонено с ошибкой через 1 секунду. Затем мы используем метод `.then()` для присоединения функции обратного вызова для обработки значения промиса. Мы используем метод `.catch()` для присоединения функции обратного вызова для обработки ошибки. Метод `.catch()` является сокращением для `.then(value=›{}, error =› {})`, что означает, что если обещание отклонено, ошибка будет обнаружена второй функцией, переданной в `.catch()`.

Краткое содержание

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