Впервые я наткнулся на промисы на leetcode. Супер просто, супер просто https://leetcode.com/problems/add-two-promises/. Кроме того, что, черт возьми, обещание?

Промис — это объект, представляющий возможное завершение или сбой асинхронной операции — Использование промисов — JavaScript | МДН. Итак, что это значит? Объект — это просто термин из компьютерной науки для всего, что имеет состояние и поведение, или, другими словами, для всего, что имеет данные и код. Это становится немного сложнее, но это, по сути, все. Асинхронность просто означает, что вы можете запустить другую задачу, не дожидаясь завершения другой задачи.

-w3schools

Промисы зависят от двух ключевых состояний — успеха и ошибки. В зависимости от того, когда производящий код получает результат, должен появиться один из двух обратных вызовов. Сработало или нет? Ну, это зависит от состояния и результата объекта обещания.

В JavaScript обещание может быть ожидающим, выполненным или отклоненным.

Ожидание означает, что объект обещания работает, а результат не определен.

Выполнено означает, что результатом является значение.

Отклонено означает, что результатом является ошибка.

Некоторые вещи, которые следует отметить:

Вы не можете получить доступ к состоянию свойств обещания, и для обработки обещаний должны использоваться методы результата + обещания.

Чтобы поиграть с ними, нажмите здесь: Площадка обещаний