1.0.0 • Published 7 years ago

compose-p v1.0.0

Weekly downloads
1
License
MIT
Repository
-
Last release
7 years ago

Compose with Promises for async await node 8

/*
*   Requires Node 8+
*   Also Works in chrome, simply copy and paste into console.
*/


const compose = require('./');

const get = (v) => {
	return Promise.resolve(`${v}s`);
}

const getAllError = compose(
	get,
	() => Promise.reject('Error! :('),
	get,
	get
);
const getAll = compose(
	get,
	get,
	get,
	get
);

async function main() {
	try {
		const v = await getAllError('ted');
		console.log('result', v);
	} catch (e) {
		console.error(e);
	}

	try {
		const v = await getAll('ted');
		console.log('result', v);
	} catch (e) {
		console.error(e);
	}

	console.log(await get(await get(await get('ted'))));
}

main();

Alternatives

Use ramda R.composeP

Contributions Welcome

Thanks to @cameronbourke and @gwyneplaine for the discussion. :D