RxJS에서`Scheduler` 란 무엇입니까?
문서에서 스케줄러 라는 용어를 자주 보았습니다 .
그러나이 용어는 무엇을 의미합니까? 나는 소위를 사용하는 방법도 모릅니다 Scheduler
. 공식 문서는 Scheduler
정확히 무엇인지 알려주지 않았습니다 . 이것은 RxJS의 일반적인 개념입니까 아니면 특정 개념입니까?
Rx 스케줄러는 호출 코드가 작업을 예약하는 데 사용되는 메커니즘을 인식 할 필요없이 향후 실행되도록 작업을 예약 할 수있는 추상화를 제공합니다.
Rx 메소드가 알림을 생성해야 할 때마다 스케줄러에서 작업을 예약합니다. 기본값을 사용하는 대신 Rx 메서드에 스케줄러를 제공하면 이러한 알림이 전송되는 방식을 미묘하게 제어 할 수 있습니다.
Rx (예 : Rx.NET)의 서버 측 구현에서 스케줄러는 중요한 역할을합니다. 스레드 풀 또는 전용 스레드에서 무거운 작업을 예약하고 UI 스레드에서 최종 구독을 실행하여 UI를 업데이트 할 수 있습니다.
RxJ를 사용할 때 실제로 대부분의 메소드에 대한 스케줄러 인수에 대해 걱정할 필요가있는 경우는 거의 없습니다. JavaScript는 기본적으로 단일 스레드이기 때문에 스케줄링 옵션이 많지 않으며 기본 스케줄러가 일반적으로 올바른 선택입니다.
유일한 선택은 다음과 같습니다.
immediateScheduler
-작업을 동기식으로 즉시 실행합니다. 스케줄러를 전혀 사용하지 않는 것과 같습니다. 따라서 예약 된 작업은 동기식으로 실행됩니다.currentThreadScheduler
-immediateScheduler
작업이 즉시 실행된다는 점과 유사 합니다. 그러나 재귀 적으로 작동하지 않습니다. 따라서 작업이 실행 중이고 더 많은 작업을 예약 하면 해당 추가 작업이 현재 작업이 완료된 후 실행되도록 대기열에 추가됩니다. 따라서 작업은 때때로 동 기적으로, 때로는 비동기 적으로 실행됩니다. 이 스케줄러는 스택 오버플로 또는 무한 재귀를 방지하는 데 유용합니다. 예를 들어 스케줄러에서Rx.Observable.of(42).repeat().subscribe()
실행되면 무한 재귀가 발생immediate
하지만 기본적으로 스케줄러에서return
실행되므로currentThread
무한 재귀는 피합니다.timeoutScheduler
-향후 실행 예정인 작업을 지원하는 유일한 스케줄러입니다. 기본적으로setTimeout
모든 작업을 예약하는 데 사용 합니다 (작업을 "지금"실행하도록 예약하면 다른 더 빠른 비동기 메서드를 사용하여 작업을 예약합니다). 이 스케줄러에 예약 된 모든 작업은 비동기 적으로 실행됩니다.
브라우저 애니메이션 프레임에서 작업을 예약하는 스케줄러 등과 같은 더 많은 것이있을 수 있습니다.
테스트 가능한 코드를 작성하려는 경우 거의 항상 스케줄러 인수를 제공하려고합니다. 이는 단위 테스트에서 testScheduler
인스턴스를 생성 하여 단위 테스트가 Rx 코드에서 사용하는 클럭을 제어 할 수 있도록하므로 작업의 정확한 타이밍을 제어 할 수 있기 때문입니다.
참고 URL : https://stackoverflow.com/questions/28145890/what-is-a-scheduler-in-rxjs
'Program Tip' 카테고리의 다른 글
Entity Framework 6.0에서 마이그레이션을 비활성화하는 방법 (0) | 2020.11.14 |
---|---|
Python 3.4 asyncio 코드를 테스트하는 방법은 무엇입니까? (0) | 2020.11.14 |
자바 스크립트에서 새 위치 객체 만들기 (0) | 2020.11.13 |
Visual Studio에서 실행하기 전에 F5가 프로젝트를 다시 빌드하지 않는 이유는 무엇입니까? (0) | 2020.11.13 |
대문자를 소문자로 변환하는 방법 (0) | 2020.11.13 |