Program Tip

RxJS에서`Scheduler` 란 무엇입니까?

programtip 2020. 11. 14. 10:57
반응형

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

반응형