Introduction to p-pipe
The p-pipe library is a powerful utility for composing promise-returning functions in JavaScript. Function composition allows you to combine multiple functions into a single function, simplifying code management and enhancing reusability. With p-pipe, you can easily create pipelines of asynchronous operations.
Core APIs and Usage Examples
pipe(…fns)
The pipe
function takes an arbitrary number of functions and returns a new function that, when called, returns the result of executing the supplied functions in sequence from left to right.
const pPipe = require('p-pipe'); const add = async x => x + 1; const double = async x => x * 2; const pipeline = pPipe(add, double); pipeline(5).then(console.log); // Output: 12
Custom Error Handling
Handle errors within your composed functions using try-catch blocks or custom error handling mechanisms.
const pPipe = require('p-pipe'); const add = async x => { if (x < 0) throw new Error('Negative value'); return x + 1; }; const double = async x => x * 2; const pipeline = pPipe(add, double); pipeline(-1).catch(console.error); // Output: Error: Negative value
Real-World Application Example
Below is an example of using p-pipe in a real-world application to fetch data, process it, and store it.
const pPipe = require('p-pipe'); const fetch = require('node-fetch'); const fs = require('fs/promises'); const fetchData = async url => { const response = await fetch(url); return response.json(); }; const processData = async data => { return data.map(item => ({ ...item, processed: true })); }; const saveData = async data => { await fs.writeFile('data.json', JSON.stringify(data, null, 2)); return 'Data saved successfully'; }; const pipeline = pPipe(fetchData, processData, saveData); pipeline('https://api.example.com/items') .then(console.log) // Output: Data saved successfully .catch(console.error);
With p-pipe, you can clearly define and manage your data operations, making your code more maintainable and readable.
Hash: 4e64fee54eaa2fe03f14331e3315c9814e8abf9d9cdd32d124fa035b9113af42