를 사용하려면 않는, 그래서에서의 유용한 시나리오에 의해 이해하려고 노력 중이 야, 내가 스케줄러Rxjs : 당신은 내가 그것을 rxjs 문서의 스케줄러에 의해 의미 무엇을하는지 이해가 안 스케줄러에게
답변
을 이해할 수있는 어떤 시나리오 &tldr;
당신이 경우 Schedulers
자신을 염려 할 필요가 없습니다 것입니다 대부분의 경우 단지의 경우 90 %의 기본 괜찮 있다는 사실을.
Scheduler
설명은 단순히 RxJS를 사용할 때 시간을 표준화하는 방법입니다. 그것은 실제로 일정이 미래에 언젠가 발생하는 이벤트를 발생합니다.
schedule
메서드를 사용하면 스케줄러가 앞으로 실행할 새로운 작업을 대기열에 추가 할 수 있습니다. Scheduler
의 기능은 완전히 구현 된 것입니다. 종종 그것은 미래의 행동을 실행하는 가장 효율적인 수단을 선택하는 것에 불과합니다.
timer
연산자를 사용하여 향후 언젠가 작업을 실행하는 간단한 예를 들으십시오.
var source = Observable.timer(500);
이것은 RxJS의 표준 요금입니다. Scheduler
은 질문 할 때 나타납니다. 500은 무엇을 의미합니까? 기본 경우에는 500 밀리 초와 같을 것입니다. 이는 규칙이 무엇이며 기본값은 Scheduler
이며, 500 밀리 초를 기다린 다음 이벤트를 내 보냅니다.
그러나 정상적으로 작동하는 데 시간의 흐름을 원하지 않는 경우가 있습니다. 이에 대한 가장 일반적인 사용 사례는 테스트 할 때입니다. 우리는 실제로 작업이 완료 될 때까지 500 밀리 초를 기다리고 싶지 않습니다. 그렇지 않으면 테스트 스위트가 실제로 완료 될 때까지 걸릴 것입니다!
이 경우 실제로 스트림의 결과를 검증하기 전에 500 밀리 초를 기다릴 필요가 없도록 시간의 흐름을 제어하려고합니다. 이 경우 작업을 동 기적으로 실행할 수있는 TestScheduler
을 사용할 수 있으므로 비동기 성 난잡함을 처리 할 필요가 없습니다.
let scheduler = new TestScheduler();
//Overrides the default scheduler with the default scheduler
let source = Observable.timer(500, scheduler);
//Subscribe to the source, which behaves normally
source.subscribe(x => expect(x).to.be(0));
//When this gets called all pending actions get executed.
scheduler.flush();
우리는 시간 흐름을 변경하려는 경우가 더 많습니다. 예를 들어 게임 컨텍스트에서 작업하는 경우 우리는 또는 다른 가짜 시간 스케일에 스케줄링을 연결하려고합니다. AnimationFrameScheduler
또는 VirtualTimeScheduler
과 같은 것을 사용해야합니다.