JS 함수형 프로그래밍 - 병렬처리
병렬적 처리 지금까지는 프로미스의 resolve() 함수가 결과를 바로 만들어내도록 해서 콜스택이 비워지면 프로미스들이 즉시 처리되도록 예제가 구성되었었다. 만약 프로미스가 시간이 어느정도 걸리는 작업들이라면 지연평가에서는 어떻게 처리되고 있을까? const delay1000 = a => new Promise(resolve => { setTimeout(() => resolve(a), 1000); }) console.time(''); go([1,2,3,5,5,5,5], L.map(a => delay1000(a*a)), L.filter(a => a%2), reduce(add), console.log, a => console.timeEnd('')); 위 코드는 go함수의 첫번째 인자인 배열 내부에 있는 원소 ..
더보기
JS 함수형 프로그래밍 - 비동기, Promise [2]
go, pipe, reduce 에서의 비동기 제어 이해하기 많이 어려웠던 코드... 이벤트 루프의 동작을 고려하며 분석해보자. 우선 go 함수와 reduce함수를 통해 promise도 다룰 수 있도록 만들 수 있다. reduce코드를 조금만 수정하면 된다. go(1, a => a+ 2, a=> Promise.resolve(a + 100), //Promise 등장 a => a+ 20, a => a+ 200, (a) => console.log('go 결과', a)); const reduce = curry((f, acc, iter)=> { if(!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } else { iter = iter[Symbol...
더보기