Promise

Объект Promise служит хранилищем для результата асинхронной операции это специальный объект, который хранит своё состояние, текущий результат (если есть) и коллбэки.

A promise can be:

  • fulfilled - The action relating to the promise succeeded

  • rejected - The action relating to the promise failed

  • pending - Hasn't fulfilled or rejected yet

  • settled - Has fulfilled or rejected

  • до промисов:

    • модель события (addEventListener)

    • функции обратного вызова (callback)

  • внутренние состояния: pending, fulfilled, rejected

  • методы then, catch

  • new Promise()

    let fs = require('fs');
    
    function readFile(filename) {
      return new Promise((resolve, reject) => {
        fs.readFile(filename, { encoding: 'utf8' }, (err, content) => {
          if(err) {
            reject(err);
          }
          resolve(content);
        })
      });
    }
  • Promise.resolve()

Сразу возвращает объект Promise в состоянии "выполнено"

let promise = Promise.resolve(42);

promise
  .then(value => console.log(value)); // 42
  • Promise.reject()

Сразу возвращает объект Promise в состоянии "отклонено"

let promise = Promise.reject(42);

promise
  .catch(value => console.log(value)); // 42
  • Promise.all()

    Вызов Promise.all(iterable) получает массив (или другой итерируемый объект) промисов и возвращает промис, который ждёт, пока все переданные промисы завершатся, и переходит в состояние «выполнено» с массивом их результатов.

  • Promise.race()

Gереходит в fullfiled сразу после первого удачного выполнения

  • Global ErrorHandler

в спецификации нет глобальной обработки rejected Promises

  • nodeJS: unhandledRejection(), rejectionHandler()

  • браузеры: window.unhandledrejection, window.onrejecthandled

Last updated