Введение в промисы
При стандартном выполнении JavaScript инструкции выполняются последовательно, одна за другой. То есть сначала выполняется первая инструкция, потом вторая и так далее. Однако что, если одна из этих операций выполняется продолжительное время. Например, она выполняет какую-то высоконагруженную работу, как обращение по сети или обращение к базе данных, что может занять неопределенное и иногда продолжительное время. В итоге при последовательном выполнении все последующие операции будут ожидать выполнения этой операции. Чтобы избежать подобной ситуации JavaScript предоставляет ряд инструментов, которые позволяют избежать подобного сценария, чтобы последующие операции могли выполняться, пока выполняется продолжительная операция. Одним из таким инструментов являются Promise
.
Промис
это объект представляющий результат успешного или неудачного завершения асинхронной операции. Асинхронная операция, упрощенно говоря, это некоторое действие, выполняется независимо от окружающего кода в котором она вызывается, не блокирует выполнение вызываемого кода. Промис может находиться в одном из следующих состояний:
pending (состояние ожидания)
начальное состояние, промис создан, но выполнение еще не завершеноfulfilled (успешно завершено)
действие которое представляет промис, успешно завершеноrejected (завершено с ошибкой)
при выполнении действия которое представляет промис, произошла ошибка
Промис представляет собой объект, в который параметром передается функция, внутри которой нужно размещать наш асинхронный код:
let promise = new Promise(function() {
// асинхронный код
});