👶 TypeScript

비동기 스트림

개발자 린다씨 2023. 1. 24. 14:00
반응형

비동기 스트림

미래의 서로 다른 시점에 이용할 수 있게 될 값이 여러 개라면 어떻게 처리해야 할까요?

 

이런 상황은 생각보다 자주 발생합니다. 

 

예를 들어 파일 시스템에서 파일의 일부를 읽는 상황, 티빙 서버로부터 비디오 스트리밍의 픽셀들을 받는 상황, 폼을 작성하느라 여러 키를 입력하는 상황, 연말 파티에 수십 명의 친구가 오는 상황 등이 모두 이에 해당한다고 볼 수 있습니다.

 

각각의 이벤트가 서로 관련 없어 보이지만, 비동기 스트림 관점에선 다들 비슷합니다.

 

이들은 모두 여러 개의 데이터로 이루어지며, 각각의 데이터를 미래의 어떤 시점에 받게 된다는 점에서 똑같습니다.

 

몇 가지 방법으로 이런 상황을 설계할 수 있는데, 가장 흔히 NodeJS의 Event Emitter 같은 이벤트 방출기(event emitter)를 이용하거나 RxJS 같은 리액티브 프로그래밍 라이브러리를 이용합니다.

 

두 방식의 차이는 콜백과 프로미스의 관계와 비슷합니다.

 

이벤트는 빠르고 가벼운 반면 리액티브 프로그래밍 라이브러리는 더 강력하며 이벤트 스트림을 조합하고 연결하는 가능을 제공합니다.

 

리액티브 프로그래밍과 관련한 정보는 RxJS, MostJS, xtream 등 유명한 리액티브 프로그래밍 라이브러리에서 제공하는 문서를 참고하면 됩니다.

https://www.npmjs.com/package/rxjs

 

rxjs

Reactive Extensions for modern JavaScript. Latest version: 7.8.0, last published: a month ago. Start using rxjs in your project by running `npm i rxjs`. There are 30201 other projects in the npm registry using rxjs.

www.npmjs.com

https://github.com/cujojs/most

 

GitHub - cujojs/most: Ultra-high performance reactive programming

Ultra-high performance reactive programming. Contribute to cujojs/most development by creating an account on GitHub.

github.com

https://www.npmjs.com/package/xstream

 

xstream

An extremely intuitive, small, and fast functional reactive stream library for JavaScript. Latest version: 11.14.0, last published: 2 years ago. Start using xstream in your project by running `npm i xstream`. There are 390 other projects in the npm registr

www.npmjs.com

 

반응형