자바스크립트는 싱글스레드 프로그래밍이기 때문에 병렬적으로 처리하는 일은 별로 없지만 NodeJS에서 NoSQL의 여러개의 쿼리를 가져오거나 이미지 처리 등과 같은 거에서 병렬적으로 평가하는 일이 필요하다
const C = {};
C.resolve = curry((f, acc, iter) => {
return iter
? reduce(f, acc, [...iter])
: reduce(f, [...acc)]));
});
const deley500 = a => new Promise(resolve = > setTimeout(() => resolve(a), 500));
go([1, 2, 3, 4, 5],
L.map(a => delay500(a * a)),
L.filter(a => a % 2),
L.filter(a => a % 2),
L.filter(a => a % 2),
L.filter(a => a % 2),
L.filter(a => a % 2),
L.filter(a => a % 2),
C.reduce(add), // 1번째 값을 순회할 때 실행하기 때문에 .5초 동안 실행 안함
console.log);
// 1, 2, 3, 4, 5를 차례대로가 아니라 병렬적으로 처리할 때 그리고 부하가 아니라 효율을 우선시 할 때 병렬적으로 처리할 수 있다.