Javascript: Промисы: then

JS: Асинхронное программирование 17 сообщений
Обновлено: 14 сент., 12:38
320
Студентов
72%
Завершения

CustomPromise.js

Серия испытаний CustomPromise затрагивает множество тем, тесно связана со стандартом ecma и будет полезна для прокачки опытным разработчикам. Если тема классов и позднего связывания вам пока плохо знакомы, то продолжайте обучение и возвращайтесь к этим испытаниям позже.

В данном испытании вы собственными силами начнёте реализовывать "облегчённую" версию объекта Promise. Последующие испытания будут раскрывать тему и дополнять её новой функциональностью.

В данном испытании необходимо создать только класс, без асинхронности, но с цепочкой вызовов. Для этого реализуйте в классе CustomPromise конструктор, принимающий колбек executor(resolve) и метод then(callback);

В решении должны отсутствовать встроенные 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!

Подсказки

Вам понадобится вспомогательный метод, чтобы замыкать значения.

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

В решении учителя используется связывание через bind(), но в процессе решения можно упростить себе задачу, используя стрелочные функции.

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

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

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