더북(TheBook)

이 코드를 실행하면 다음 메시지가 출력됩니다.

"filtering, same as original? true"
"filtering, same as original? true"
"filtering, same as original? true"
"mapping, same as original? false"
"mapping, same as original? false"

반대로 RxJS는 중간 데이터 구조를 생성하지 않습니다. 앞의 예제에서 볼 수 있듯이 filter()는 체인 맨 앞에 있으므로 원본과 동일한 데이터 구조에서 작동합니다. 이 작업은 map()을 호출하는, 새 소유 객체가 되는 새로운 배열 인스턴스를 반환합니다. 새로운 배열은 가비지 콜렉션이 작동하기 전에 한 번만 생성되고 사용되므로 매우 큰 컬렉션에서는 비효율적일 수 있습니다. 그림 3-10은 두 접근법의 차이점을 보여줍니다.

▲ 그림 3-10 배열의 filter와 map 연산자는 중간에 낭비되는 데이터 구조를 생성하지만, RxJS 옵저버블은 중간 저장을 지양하고 한 번에 모든 함수에서 전체 이벤트를 최적화하고 처리한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.