JavaScript: Промисы: состояние

Обновлено: 02 дек., 07:59
210
Студентов
66%
Завершения

CustomPromise.js

Это испытание является продолжением предыдущего и теперь вы познакомитесь с автоматным программированием.

Реализуете в классе CustomPromise метод then(callback) и вызов обработчиков на основе состояния объекта. Состояния запишите в объект STATES и используйте его вместо текстовых значений.

Алгоритм

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

Достаточно будет одного состояния - его установки и очистки, чтобы не усложнять реализацию. На изменение состояния должна происходить реакция, а если объект находится в начальном состоянии, то реакции должны накапливаться.

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

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

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

const promise = new CustomPromise((resolve) => resolve('Hello, world!'));
promise
  .then((value) => {
    console.log(value); // 'Hello, world!'
  });

const result = await promise
  .then((value) => value.replace('Hello', 'Goodbye'))
  .then((value) => value.toUpperCase());
console.log(result); // GOODBYE, WORLD!

Подсказки

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

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

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

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

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

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