JavaScript: Промисы: reject

Обновлено: 14 сент., 03:00
101
Студент
74%
Завершения

CustomPromise.js

Это испытание является продолжением предыдущего и расширяет функционал функции executor, добавлением колбека reject(data).

Реализуйте в классе CustomPromise конструктор, принимающий колбек executor(resolve, reject) и метод then(onFulfill, onReject). Задачи resolve(data) и reject(error) должны выполняться асинхронно.

Алгоритм

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

Можно копировать решение учителя из предыдущего испытания и расширять его. В решении должны отсутствовать встроенные Promise и ключевое слово async. Только таймеры и вызовы функций из функций.

Метод catch сейчас реализовывать не нужно, пусть всё попадает в then.

Примеры использования

import CustomPromise from '../CustomPromise.js';

const promise = new CustomPromise((resolve, reject) => reject('Hello, world!'));
promise
  .then((value) => {
    console.log(value); // Данный обработчик будет пропущен
  });

// для упрощения решения данные из reject передавайте в resolve
const result = await promise.then((x) => x.toUpperCase());
console.log(result); // 'HELLO, WORLD!'

Подсказки

Изучите кейсы использования в тестах, они опираются на возможности промисов из документации.

Если почувствуете, что нужны дополнительные материалы:

  • описание стандарта, который имплементируется в упражнении
  • курс "Синхронная асинхронность", чуть глубже погружающий в тему
  • курс "Автоматное программирование" о конечных автоматах, чем является промис

Для полного доступа к испытанию нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов