더북(TheBook)

예를 들어 무한 스트림을 사용하는 다음 코드에서 지연 평가를 사용하지 않는다면 애플리케이션의 메모리가 고갈되어 애플리케이션을 멈추게 됩니다.

//1
Stream.range(1, Number.POSITIVE_INFINITY) -- 메모리에서 많은 숫자를 무한히 읽습니다.
.take(100)
.subscribe(console.log);
//2
Stream.fromEvent('mousemove') -- 사용자가 행하는 모든 마우스 움직임을 감지합니다.
.map(e => [e.clientX, e.clientY])
.subscribe(console.log);

1번 코드에서 지연 평가는 스트림으로 하여금 첫 번째 100을 얻기 전에 실제로 모든 양수를 무한하게 실행하지 않게 해 줍니다. 그리고 저장하려는 숫자가 많더라도 스트림은 데이터를 지속해서 유지하지 않습니다. 그 대신, 방출되는 데이터는 생성되는 대로 구독자 모두에게 전송됩니다. 2번 코드에서, 모든 마우스 움직임의 좌표를 메모리에 저장해야 한다고 상상해 보세요. 이 경우에는 엄청난 양의 메모리를 사용해야 할 수 있습니다. 데이터를 유지하기보다 RxJS는 데이터를 자유롭게 흐르게 하고 생성 방법과 관계없이 이터레이터 패턴으로 모든 타입의 데이터 소스를 탐색하게 합니다.

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