지연된 함수열 병렬적으로 평가하기

joDMSoluth·2020년 3월 17일
0

함수형프로그래밍

목록 보기
1/17

C.reduce, C.take

자바스크립트는 싱글스레드 프로그래밍이기 때문에 병렬적으로 처리하는 일은 별로 없지만 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를 차례대로가 아니라 병렬적으로 처리할 때 그리고 부하가 아니라 효율을 우선시 할 때 병렬적으로 처리할 수 있다.
profile
풀스택이 되고 싶은 주니어 웹 개발자입니다.

0개의 댓글