Javascript: Промисы: event loop

JS: Асинхронное программирование 3 сообщения
Обновлено: 04 мая, 12:18
77
Студентов
70%
Завершения

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(' ')); // Сначала меняем статус. А уже потом резолвим.

Подсказки

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

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

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

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

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

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