> 웹 프론트엔드 > JS 튜토리얼 > xJS 연산자를 사용하여 Angular의 잠재력을 최대한 활용하세요

xJS 연산자를 사용하여 Angular의 잠재력을 최대한 활용하세요

Linda Hamilton
풀어 주다: 2024-12-29 16:16:11
원래의
864명이 탐색했습니다.

Unlock Angular

필요한지 몰랐던 5가지 RxJS 연산자(지금까지!)

리액티브 프로그래밍은 JavaScript에서 비동기 데이터를 처리하는 방식을 변화시켰습니다. RxJS(Reactive Extensions for JavaScript)는 데이터 스트림 작업을 쉽게 만들어주는 강력한 라이브러리입니다. map, filter, mergeMap과 같은 연산자가 일반적으로 사용되지만 RxJS에는 복잡한 논리를 단순화할 수 있는 숨겨진 보석이 많이 있습니다. 이 가이드에서는 잘 알려지지 않은 다섯 가지 RxJS 연산자를 소개하고 사용 사례와 이를 구현하는 방법을 단계별로 설명합니다.


RxJS 연산자란 무엇입니까?

RxJS 연산자는 관찰 가능 항목을 다양한 방식으로 변환, 필터링 또는 결합할 수 있게 해주는 함수입니다. 비동기 스트림 처리를 더욱 선언적이고 직관적으로 만듭니다. 연산자를 연결하면 강력하고 대응적인 워크플로를 구축할 수 있습니다.


덜 알려진 연산자를 사용하는 이유는 무엇입니까?

RxJS의 일부 연산자는 매우 특정한 문제를 해결하거나 코드 가독성과 성능을 향상시킵니다. 이러한 숨겨진 보석을 배우면 코드를 더욱 효율적이고 우아하게 만들 수 있습니다.


1. 파티션: 스트림 분할

파티션이란 무엇입니까?

파티션 연산자는 조건자에 따라 단일 Observable을 두 개의 Observable로 분할하는 데 사용됩니다. 하나의 Observable은 조건자를 만족하는 값을 내보내고 다른 Observable은 나머지 값을 내보냅니다.

언제 사용하나요?

오류를 필터링하거나 짝수와 홀수를 분리하는 등 별도의 스트림에서 다양한 유형의 데이터를 처리해야 하는 경우 파티션을 사용하세요.

예: 짝수와 홀수 나누기

1단계: 필수 RxJS 연산자 가져오기

import { from } from 'rxjs';
import { partition } from 'rxjs/operators';
로그인 후 복사
로그인 후 복사

2단계: 관찰 가능 항목 생성

const numbers$ = from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
로그인 후 복사
로그인 후 복사

3단계: 파티션 사용

const [even$, odd$] = partition(numbers$, (num) => num % 2 === 0);
로그인 후 복사
로그인 후 복사

4단계: 두 스트림 모두 구독

even$.subscribe((num) => console.log(`Even: ${num}`));
odd$.subscribe((num) => console.log(`Odd: ${num}`));
로그인 후 복사
로그인 후 복사

산출

Even: 2  
Even: 4  
Even: 6  
Even: 8  
Odd: 1  
Odd: 3  
Odd: 5  
Odd: 7  
Odd: 9  
로그인 후 복사
로그인 후 복사

핵심 내용

파티션은 여러 필터 연산자가 필요한 논리를 단순화합니다.


2. CombineLatestWith: 최신 값 병합

CombineLatestWith란 무엇입니까?

이 연산자는 여러 Observable의 최신 값을 단일 Observable로 결합합니다.

언제 사용하나요?

사용자 입력을 실시간 데이터와 결합하는 등 여러 스트림의 변경 사항에 동시에 대응해야 하는 경우 CombineLatestWith를 사용하세요.

예: 사용자 입력과 API 데이터 결합

1단계: 필수 RxJS 연산자 가져오기

import { from } from 'rxjs';
import { partition } from 'rxjs/operators';
로그인 후 복사
로그인 후 복사

2단계: 관찰 가능 항목 생성

const numbers$ = from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
로그인 후 복사
로그인 후 복사

3단계: 스트림 결합

const [even$, odd$] = partition(numbers$, (num) => num % 2 === 0);
로그인 후 복사
로그인 후 복사

산출

even$.subscribe((num) => console.log(`Even: ${num}`));
odd$.subscribe((num) => console.log(`Odd: ${num}`));
로그인 후 복사
로그인 후 복사

핵심 내용

combineLatestWith는 여러 스트림을 실시간으로 동기화하는 데 적합합니다.


3. 감사: 정밀한 스로틀

감사란 무엇입니까?

감사 연산자는 지정된 기간 후에 관찰 가능한 소스에서 가장 최근 값을 내보냅니다.

언제 사용하나요?

드래그 앤 드롭 이벤트나 스크롤 등 방출을 제어하려는 경우 감사를 사용하세요.

예: 스크롤 이벤트 내보내기

1단계: 필수 RxJS 연산자 가져오기

Even: 2  
Even: 4  
Even: 6  
Even: 8  
Odd: 1  
Odd: 3  
Odd: 5  
Odd: 7  
Odd: 9  
로그인 후 복사
로그인 후 복사

2단계: 스크롤 관찰 가능 항목 만들기

import { fromEvent, of } from 'rxjs';
import { combineLatestWith } from 'rxjs/operators';
로그인 후 복사

3단계: 감사 적용

const input$ = fromEvent(document.getElementById('input'), 'input');
const apiData$ = of({ name: 'John Doe', age: 30 });
로그인 후 복사

산출

input$
  .pipe(combineLatestWith(apiData$))
  .subscribe(([event, data]) => {
    console.log(`Input: ${event.target.value}, API Data: ${JSON.stringify(data)}`);
  });
로그인 후 복사

핵심 내용

감사는 최신 값을 잃지 않고 정확한 조절을 보장합니다.


4. 확장: 재귀적 관찰 가능 항목

확장이란 무엇입니까?

expand 연산자는 방출된 각 값을 새로운 관찰 가능 항목에 재귀적으로 투영합니다.

언제 사용하나요?

재귀 API 호출이나 트리 순회와 같은 시나리오에는 확장을 사용하세요.

예: 페이지를 매긴 데이터 가져오기

1단계: 필수 RxJS 연산자 가져오기

Input: Hello, API Data: {"name":"John Doe","age":30}  
로그인 후 복사

2단계: API 호출 시뮬레이션

import { fromEvent, interval } from 'rxjs';
import { audit } from 'rxjs/operators';
로그인 후 복사

3단계: 확장 사용

const scroll$ = fromEvent(window, 'scroll');
로그인 후 복사

산출

scroll$
  .pipe(audit(() => interval(1000)))
  .subscribe(() => console.log('Scrolled!'));
로그인 후 복사

핵심 내용

expand는 재귀 연산을 우아하게 처리하는 데 적합합니다.


5. groupBy: 스트림 구성

groupBy란 무엇입니까?

groupBy 연산자는 Observable을 지정된 키를 기준으로 그룹화한 여러 Observable로 분할합니다.

언제 사용하나요?

심각도별로 로그를 구성하는 등 데이터를 동적으로 분류해야 하는 경우 groupBy를 사용하세요.

예: 로그 그룹화

1단계: 필수 RxJS 연산자 가져오기

Scrolled!  
Scrolled!  
로그인 후 복사

2단계: 관찰 가능한 로그 생성

import { of } from 'rxjs';
import { expand, take } from 'rxjs/operators';
로그인 후 복사

3단계: groupBy 사용

const fetchPage = (page) => of(`Page ${page}`);
로그인 후 복사

산출

fetchPage(1)
  .pipe(
    expand((page) => (page < 5 ? fetchPage(page + 1) : of())),
    take(5)
  )
  .subscribe((data) => console.log(data));
로그인 후 복사

핵심 내용

groupBy는 데이터를 카테고리별로 동적으로 정리하는 것을 단순화합니다.


자주 묻는 질문

가장 일반적인 RxJS 연산자는 무엇입니까?

map, filter 및 mergeMap과 같은 연산자는 데이터 스트림을 변환하고 필터링하는 데 널리 사용됩니다.

올바른 운영자를 어떻게 선택합니까?

데이터 흐름 요구 사항에 따라 연산자를 선택하세요. 분할에는 partition을, 동기화에는 CombineLatestWith를, 분류에는 groupBy를 사용하세요.

이 연산자를 결합할 수 있나요?

예, 이러한 연산자를 연결하여 고급 논리를 위해 파티션과 확장을 결합하는 등 복잡한 워크플로를 구축할 수 있습니다.


5가지 RxJS 연산자를 배우면 더 깔끔하고 효율적인 반응형 코드를 작성하는 데 도움이 됩니다. 다음 예제를 통해 실험을 시작하고 Angular 애플리케이션이 더욱 역동적이고 강력해지는 것을 지켜보세요!

위 내용은 xJS 연산자를 사용하여 Angular의 잠재력을 최대한 활용하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿