손쉬운 RxJS 디버깅
5977 단어 rxjswebdevproductivityjavascript
Observables
가 강력하다는 것은 비밀이 아닙니다. RxJS는 마법 같은 연산자 컬렉션을 통해 더욱 강력하고 재미있게 만듭니다.I even built a State-Management library (ActiveJS) based on RxJS Observables.
문제
때때로 여러 연산자로 구축된 파이프 스트림은 매우 혼란스러울 수 있으며 Observable 스트림을 디버깅하는 것은 실제로 재미가 없습니다. 스택 추적은 쓸모가 없으며 디버거가 모든 내부 코드를 검토할 때 기존의 디버깅은 너무 지루할 수 있습니다.
종종 우리는 이방인과 신자 모두의 유일한 구세주인
tap
운영자에게 의지합니다.우리는 모두 이 작업을 수행했습니다
tap(v => console.log('here', v))
;)해결책
Observable 스트림의 모든 단계를 모든 연산자까지 시각화할 수 있고 구독 및 완료를 포함한 출력을 단일 유틸리티 기능으로 시각화할 수 있다고 말하면 어떻게 됩니까?
이것이 바로 자동화된 RxJS 시각화를 위한 단일 기능인 RxJS-Debug이 제공하는 것입니다.
다음과 같은 Observable 스트림이 있다고 가정해 봅시다.
const source$ = timer(1000, 4000); // emits a number after every 4 seconds
source$.pipe(
map(x => x + 5), // add 5
take(2), // complete the stream after 2 values
switchMap(x => of(x * 2)) // multiply by 2, (can be an API call)
)
.subscribe();
이 스트림을 시각화하는 것은
source$
Observable을 RxJS-Debug에서 제공하는 유틸리티 함수$D
로 래핑하는 것만큼 쉽습니다.// wrap the Observable with $D to visualize it
const debugSource$ = $D(source$);
// debugSource$ is a copy of the original Observable, but with logging-enabled
이제
debugSource$
대신 source$
를 사용해야 합니다.debugSource$
.pipe(
map(x => x + 5),
take(2),
switchMap(x => of(x * 2))
)
.subscribe(); // activate the stream
모두 완료되었습니다. 콘솔에 표시되는 내용입니다.
이 모든 것이 하나의 기능으로 이루어집니다. 멋지지 않아.
하지만 잠시만요. 운영자 사이에 지연이 있는 이유는 무엇입니까?
$D
에 전달할 수 있는 구성 옵션을 건너뛰었습니다.이것은 위의 GIF(또는 선호하는 GIF)를 생성하는 데 사용된 실제 구성입니다.
// wrap the Observable with $D to visualize it
const debugSource$ = $D(source$, {id: 'Special', addDelay: 500})
id
는 Observable과 관련된 로그를 쉽게 식별하기 위한 선택적 식별자입니다. 그렇지 않으면 증분numeric
ID가 자동으로 할당됩니다.addDelay
플래그는 모든 연산자가 파이프에 제공되기 전에 고정 지연을 추가하여 보다 관리 가능한 속도로 출력 및 실행 흐름을 이해할 수 있는 시간을 제공합니다.콘솔 로그에서 노이즈를 줄이기 위해 연산자의 출력을 숨기는 다른 옵션
hideOutputs
이 있습니다. 실제 값이 아니라 실행 흐름에만 관심이 있을 때 유용할 수 있습니다.지금은 그게 다입니다.
질문, 제안 또는 피드백이 있으면 알려주세요.
건배
🤾♂️ RxJS-Debug Playground
💻 RxJS-Debug GitHub Repo (아마도 ⭐를 떨어뜨립니다 :)
Reference
이 문제에 관하여(손쉬운 RxJS 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dabalyan/effortless-rxjs-debugging-5epf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)