JavaScript: Промисы: event loop
CustomPromise.js
Это испытание является продолжением предыдущего, расширяя количество состояний и добавляя асинхронную составляющую.
Ранее вы реализовали реакцию на некое состояние, теперь пришла пора добавить это состояние в объект и сделать реакцию на него асинхронной. Реализуйте в классе CustomPromise
метод then(onFulfill)
и обеспечьте асинхронное выполнение функции resolve(data)
.
Алгоритм
Используйте названия состояний из стандарта, так как они проверяются в тестах.
Можно копировать решение учителя из предыдущего испытания и расширять его. В решении должны отсутствовать встроенные Promise и ключевое слово async
. Только таймеры и вызовы функций из функций.
Примеры использования
import CustomPromise from '../CustomPromise.js';
const messages = [];
const resolvedPromise = new CustomPromise((resolve) => {
resolve('Сначала резолвим?');
});
const modifiedPromise = resolvedPromise
.then(() => { messages.push('Сначала меняем статус.'); });
await modifiedPromise
.then(() => { messages.push('А уже потом резолвим.') });
console.log(messages.join(' ')); // Сначала меняем статус. А уже потом резолвим.
Подсказки
Изучите кейсы использования в тестах, они опираются на возможности промисов из документации.
Если почувствуете, что нужны дополнительные материалы:
- курс "Синхронная асинхронность", чуть глубже погружающий в тему
- курс "Автоматное программирование" о конечных автоматах, чем является промис
Для полного доступа к испытанию нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.