특정 시간에 발생하도록 미리 정의 된 이벤트가 있습니다. 그리고이 같은 타이머를 가지고 : (실제로는 완전히 괜찮 더 같은 101200302401500을 ... 비록)RxJs : 미리 정의 된 시간에 이벤트를 방출하는 방법은 무엇입니까?
const timer = Rx.Observable.interval(100).timeInterval()
.map(x => x.interval)
.scan((ms, total) => total + ms, 0)
타이머는 100200300400500에 가까운 무언가를 방출 나는 또한 내가하고 싶은 몇 가지 물건을 가지고 특정 시간에. 결과 스트림이 한 번 당 값을 방출하는 것을
const stuff = Rx.Observable.from([1000, 2000, 2250, 3000, 5000]);
내가 원하는 것은 그런 방법으로 "재료"와 "타이머"를 결합하는 것입니다 : 예를 들어, 나는 다음과 같은 시간에 물건을하고 싶은 말을하자 그 시간에 "stuff"에 정의 된 시간 (또는 약간 나중에). 이 경우 t = 1000 ms, 2000 ms, 2250 ms, 3000 ms 및 5000 ms가됩니다. 참고 : 2250 사람은 간격 크기로 인해 2300 년경에 방출해야합니다. 괜찮아. 그들은 일찍 또는 한 번 이상 올 수 없습니다.
나는 하나의 해결책이 있지만 그다지 좋지 않습니다. 매 단계마다 (이 경우 100 밀리 초마다) "stuff"를 다시 시작하고 1을 취합니다. 이벤트가 "stuff"에서 방출되면 사라질 것입니다. 그 값들은 없습니다. 실제 응용 프로그램에서
는 ... 물건과 stuff2 어쩌면 stuff3있을 것입니다 (하지만 난 뭔가! 그들을 호출) 사전에감사합니다! 나는 그것이 분명했기를 바란다.
그것은 내가 원하는 것만은 아니지만 ... 물건 배열은 그들 사이의 지연이 아니라 언제 발생해야하는지에 대한 것입니다. 나는 항상 그것을 바꿀 수 있었다. lemme see ... 나는 물건이 숫자 배열 일뿐 아니라 [{ "t": 1000, "val": "xyz"}와 같을 것이라고 생각합니다. ], 그리고 정말로, 내가 쫓고있는 것은 "xyz"가 시간 1000에 방출된다는 것입니다. 그러나 이것으로 노는 것 ... –
const stuff = Rx.Observable.from ([{ "val": "jeff", "t ": 1000}, {"val ":"fred ","t ": 2500}]); stuff .flatMap (x => Rx.Observable.timer (x.t)) .subscribe (x => console.log (x)); // 그냥 "0"을 낸다. 나는 1000ms에서 "jeff"를, 2500ms에서 "fred"를 원합니다 ... 제프 후 2500ms가 아니라 1500 –
제공된 솔루션은 지정된 시간에 방출됩니다. 포함 된 샘플을 실행하면 두 번째 요소와 세 번째 요소 사이의 시간이 매우 짧음을 알 수 있습니다 (250ms가 아니라 2250ms). 아니면 아직도 오해하고 있습니까? –