2016-08-18 2 views
0

반응 확장 기능에서 새로운 기능이므로 제발 내 생각을 변명하십시오. 두 개의 관찰 대상 객체 obj1obj2이 반환됩니다. 특정 시간 창 T (내가 생각하는 버퍼)에서 나는 가장 희귀 한 아이템 시퀀스를 업 샘플링하고 싶다. 을 참조하십시오. 업 샘플링 과정에서 다른 샘플을 기반으로 Rx 관찰 가능 샘플을 올리기

  Time of returned objects 
     obj1 t1 t2 t3 t4 t5 t6 ... 
     obj2 t1   t2  t3 ... 
    os_obj2 t1 t1 t2 t2 t2 t3 ... 
time_window <-----T-----><-----T-----> 

, 우리는 obj2obj1의 항목이 존재 같은 장소 (시간)의 항목을 돌려 놓습니다.

우리가 특정 obj1 항목 시간에 복제해야 obj2 항목 obj2 항목이 특정 obj1 항목 시간에 가까운 어떤에 따라 무엇을 선택.

달성 할 수있는 방법 (가능한 기능 또는 기능의 파이프 라인)을 제안 해 주시겠습니까?

감사합니다.

+3

수신은 일반적으로 항목을 다루는 샘플 할 수 있습니다. 당신이 예측 스트림의 일종을 설정하지 않는 한 정말 미래에 대한 예측을 할 수 없습니다. 다이어그램의 t3에서이 기능을 사용하면 느리게 관찰 가능 항목이 변경 될 것임을 알 수 있습니까? – Shlomo

+0

@Shlomo는 관심에 감사드립니다. 나는 내 질문에 작은 변화를 가져왔다. 나는 이것을 할려고 노력하는 것이 현재 버퍼가 가능하다고 생각한다. 내가 맞습니까? 모든 의견 제안은 높이 평가됩니다. – Darkmoor

+2

시간 여행을 원한다고 생각하는 것 같습니다. 미래의 가치를 창출 할 수는 없습니다. – Enigmativity

답변

0

EDIT 다른 관측 대상에서 이전에 방출되지 않은 항목을 방출하고 싶습니다. 미래를 예견해야하므로 달성 할 수 없습니다.

obj2이 일정 시간에 예측 가능한 항목을 방출하는 경우, 사용자는 무언가를 할 수 있습니다. obj2을 반기 단위 이전에 방출하면 obj2의 최신 항목을 사용할 수 있으며 향후 항목을 예측할 필요가 없습니다.

다음 샘플은 obj2에서 obj1의 방출 시간으로 최신 항목을 방출합니다. 가장 쉬운 방법은 Observable.withLatestFrom을 사용하는 것입니다.

var obj1 = Rx.Observable.interval(500).map(x => "obj1." + x).take(10); 
 
var obj2 = Rx.Observable.interval(300).map(x => "obj2." + x).take(10); 
 

 
obj2.withLatestFrom(obj1).pluck(1).subscribe(x => console.log(x));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.0-beta.11/Rx.umd.js"></script>

PS

: 처음에 나는 sample 사용할 수 있습니다 생각하지만 오버 샘플링을 위해 나를 위해 작동하지 않았다.

0

관찰 가능한 스트림의 각 값에는 두 시간 요소와 값이 표시됩니다. 그럼 약간 설계도를 변경하자

Timeline 0--1--2--3--4--5--6--7--8... 
XObserve x0-x1-x2-x3-x4-x5-x6-x7-x8... 
YObserve y0-------y1-------y2------... 

그래서 우리는 두 개의 관찰 가능한을 가지고, 하나는 다른 하나는 값을 3 초마다 방출, 매 초 (단순성에 대한이의 타임 라인 두 번째 규모라고하자) 값을 방출한다. 모든 것을 감안할 때 세 번째 스트림 ZObserve에서 업 샘플링 기법을 사용하여 X 스트림의 비율로 Y 스트림의 값을 생성하고 싶습니까? 나는 그것이 무엇인지 전혀 모른다 때문에 T8ZObserve에 대한 값을 볼 수 있듯이

Timeline 0--1--2--3--4--5--6--7--8-... 
XObserve x0-x1-x2-x3-x4-x5-x6-x7-x8... 
YObserve y0-------y1-------y2------... 
ZObserve y0-y0-y1-y1-y1-y2-y2-y2-??... 

??입니다. 또한 T2T5에서 Y 스트림의 다음 값이 어떻게 될지 예측할 수 없었습니다. 그들이 무엇이 될지에 대한 신뢰할 수있는 규칙이 있다면 적절하게 코드화하고 새로운 스트림 PredictedY을 생성하고을 사용하여 @Tamas가 Z 스트림을 생성하도록 제안 할 수 있습니다.

0

나는 운영자 CombineLatest를 사용하도록 제안하고 어쩌면 그들이에서 와서 나중에

관련 문제