Skip to main content
Module

x/ramda/composeP.js

:ram: Practical functional Javascript
Very Popular
Go to Latest
File
import pipeP from './pipeP';import reverse from './reverse';

/** * Performs right-to-left composition of one or more Promise-returning * functions. The rightmost function may have any arity; the remaining * functions must be unary. * * @func * @memberOf R * @since v0.10.0 * @category Function * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z) * @param {...Function} functions The functions to compose * @return {Function} * @see R.pipeP * @deprecated since v0.26.0 * @example * * const db = { * users: { * JOE: { * name: 'Joe', * followers: ['STEVE', 'SUZY'] * } * } * } * * // We'll pretend to do a db lookup which returns a promise * const lookupUser = (userId) => Promise.resolve(db.users[userId]) * const lookupFollowers = (user) => Promise.resolve(user.followers) * lookupUser('JOE').then(lookupFollowers) * * // followersForUser :: String -> Promise [UserId] * const followersForUser = R.composeP(lookupFollowers, lookupUser); * followersForUser('JOE').then(followers => console.log('Followers:', followers)) * // Followers: ["STEVE","SUZY"] */export default function composeP() { if (arguments.length === 0) { throw new Error('composeP requires at least one argument'); } return pipeP.apply(this, reverse(arguments));}