How to use the composeP function from ramda

Find comprehensive JavaScript ramda.composeP code examples handpicked from public code repositorys.

ramda.composeP is a function that composes a series of Promise-returning functions together, with the output of each function being passed as the input of the next.

34
35
36
37
38
39
40
41
42

const endpoint = req =>
  json({ isString: typeof req.body === 'string' })

const app =
  composeP(endpoint, bufferBody)

http.createServer(mount({ app })).listen(3000)
```
fork icon10
star icon131
watch icon57

+ 13 other calls in file

22
23
24
25
26
27
28
29
30
31
const init = Array.prototype.slice.call(arguments);
const last = init.pop();
return ifElse(
	R.isEmpty,
	() => R.composeP(last),
	() => R.composeP(
		R.composeP.apply(this, R.map(executeIfResultIsSuccessful, init)),
		last
	)
)(init);
fork icon4
star icon2
watch icon0

How does ramda.composeP work?

ramda.composeP is a function that takes a list of functions that return promises, and returns a new function that applies those functions from right to left, with the output of each function becoming the input of the next, and returns a new promise that resolves to the final output of the composition.

38
39
40
41
42
43
44
45
46
47
48
49
50
        return [data, entity];
    };
};


const buildSingle = function (entity, value) {
    return R.composeP(getEntity, R.head, addToCache, build(entity, value))();
};




const createAssociatedEntities = R.curry(
fork icon4
star icon0
watch icon0

+ 2 other calls in file

7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
* @since v0.10.0
* @category Function
* @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z)
* @param {...Function} functions
* @return {Function}
* @see R.composeP
* @example
*
*      //  followersForUser :: String -> Promise [User]
*      var followersForUser = R.pipeP(db.getUserById, db.getFollowers);
fork icon0
star icon0
watch icon0

+ 35 other calls in file

Ai Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const R = require("ramda");

const multiplyAsync = async (x, y) => {
  return x * y;
};

const squareAsync = async (x) => {
  return x * x;
};

const divideAsync = async (x, y) => {
  return x / y;
};

const operations = R.composeP(squareAsync, multiplyAsync, divideAsync);

operations(4, 2)
  .then((result) => {
    console.log(result); // 4
  })
  .catch((error) => {
    console.error(error);
  });

In this example, we have three asynchronous functions: multiplyAsync, squareAsync, and divideAsync. We want to create a new function, operations, that performs these three functions in sequence. ramda.composeP is used to create this function. ramda.composeP returns a new function that takes the same arguments as the last function in the composition, in this case divideAsync. The returned function first calls divideAsync, then passes its result to multiplyAsync, and finally passes the result of multiplyAsync to squareAsync. The result of squareAsync is then returned by the composed function. In the example, operations(4, 2) returns a promise that resolves to 4, which is the result of squareAsync(multiplyAsync(divideAsync(4, 2))).

12
13
14
15
16
17
18
19
20
21

var body = JSON.parse(event.body);

const candidate = candidateInfo(body.fullname, body.email, body.experience);  

const candidateSubmissionFx = R.composeP(submitCandidateEmailP,submitCandidateP, checkCandidateExistsP);

candidateSubmissionFx(candidate)
.then(res => {
    console.log(`Successfully submitted ${body.fullname}(${event.email}) candidate to system`);
fork icon0
star icon0
watch icon0

5
6
7
8
9
10
11
12
13
14
15
16
  tubeStatuses.forEach((tubeLine) => {
    domWriter.writeDom(tubeLine.id, tubeLine.lineStatuses[0]['statusSeverityDescription']);
  });
}


const writeStatusesToDom = R.composeP(setTubeStatuses, status.getStatuses);


document.addEventListener('DOMContentLoaded', function() {
  writeStatusesToDom();
});
fork icon0
star icon0
watch icon0

8
9
10
11
12
13
14
15
16
17
18
    }
    const init = Array.prototype.slice.call(arguments);
    const last = init.pop();
    return ifElse(R.isEmpty,
        () => R.composeP(last),
        () => R.composeP(R.composeP.apply(this, R.map(executeIfResultIsSuccessful, init)), last))(init);
};


const executeIfResultIsSuccessful = R.curry(async (fn, result) => {
    if (Result.hasInstance(result)) {
fork icon0
star icon0
watch icon0

1682
1683
1684
1685
1686
1687
1688
1689
1690
*      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"]
*/
fork icon0
star icon0
watch icon2

+ 7 other calls in file

Other functions in ramda

Sorted by popularity

function icon

ramda.clone is the most popular function in ramda (30311 examples)