Обложка канала

Senior Frontend - javascript, html, css

20191 @seniorFront

Senior Front - канал для front-end программистов, здесь есть много всего про CSS3, Javascript, Html5, Angular, React, видео / статьи / курсы

Senior Frontend - javascript, html, css

4 года назад
Открыть в
Композиция промисов Функция может вернуть промис, назовем такую функцию – фабрикой промисов. Как и обычные синхронные функции, фабрики промисов можно композировать, хотя реализация будет отличаться. Композировать будем через compose. Принцип compose, похож на pipe, с той разницей, что композиция выполняется справа налево, а в случае с pipe она выполнялась бы слева направо. const composePromises = (...promiseFabrics) => ( promiseFabrics.reduce((f, g) => value => g(value).then(f)) ); const minusOne = n => Promise.resolve(n - 1); const addTwo = n => Promise.resolve(n + 2); const multipleTwo = n => Promise.resolve(n * 2); const calculate = composePromises(minusOne, addTwo, multipleTwo); calculate(2).then(console.log); // 5 Интересно, что в отличие от синхронного варианта композиции, composePromises не возвращает функцию, которая возвращает результат редьюсера. Вместо этого, сразу возвращается результат работы редьюсера. Магия в том, что этот редьюсер возвращает функцию, а не переменную.