JavaScript: Промисы: состояние
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!
Подсказки
Изучите кейсы использования в тестах, они опираются на возможности промисов из документации.
Если почувствуете, что нужны дополнительные материалы:
- описание стандарта, который имплементируется в упражнении
- курс "Синхронная асинхронность", чуть глубже погружающий в тему
- курс "Автоматное программирование" о конечных автоматах, чем является промис
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.