2015-08-23 57 views
1

我創建函數,它的工作原理,但我不明白爲什麼。Rx重放和加入

任務。

有2個流。

  1. 通知流n
  2. 行情流Q

該函數應配對通知與報價上以下條件:

  1. 當新通知到達至N流,它應該是配上來自Q流的最新報價。
  2. 如果通知在第一次報價到達之前到達,它們都應與首先到達的報價配對。
  3. 如果N流在Q流開始後一段時間後開始,它仍然應該可以訪問來自Q流的最後一個報價。

大理石圖

1.

--N1--N2--N3------------- 
---------------Q1-------- 
---------------N1-N2-N3-- 
       Q1 Q1 Q1 

2.

-----------N1----N2--N3----- 
    --Q1--Q2------Q3------------ 
    -----------N1----N2--N3---- 
       Q2 Q3 Q3 

現在,這是我的函數

//qs, ns - hot streams 

var rqs = qs.replay(null, 1); 

qs.connect(); 
rqs.connect(); 

ns.connect(); 

var cs = ns.join(rqs, 
       _ => rqs, 
       _ => qs, 
       (n, q) => { 
        return {n : n, q : q}; 
       }    
).distinctUntilChanged(x => x.n); 

https://jsbin.com/zeyiyeg/edit?js,console

在這裏,我不明白爲什麼

  1. 爲什麼救援中隊QS之前,請務必通知
  2. 不能掌握在這種情況下 當新的通知和報價來到加入的邏輯,攜手打開未來窗口,並等到 _ => rqs流完成,爲什麼它完成了,rqs - 是熱流,根本不應該完成。

謝謝。

回答

0

上述功能的邏輯如下:

rqsqs流從未關閉的熱流(這是錯誤的,加入PARAMS應該返回completed流),因爲這每一個報價,並通知符會產生結果結果流,並且每當新的通知到達時將會創建新的流,並且一個從不被關閉。換句話說,這是錯誤的。

仍然不知道爲什麼rqs replay流之前源rs流接收通知,即使之後rs

獎金連接 - 報價,並通知受票

+0

代碼似乎在jsbin破分組。 – paulpdaniels

+0

請不要鏈接到外部網站。答案應該在Stack Overflow中完全闡述。 – Enigmativity