2015-10-08 51 views
3

如何在反應性擴展流中採用單個事件並將其分割爲同一個流中的多個事件?如何將一個事件拆分爲多個被動擴展?

我有一個序列,它檢索json數據,它是頂層數組。在json數據被解碼的地方,我想然後獲取該數組中的每個元素,並繼續沿着流傳遞這些元素。

下面是一個我想存在的假想函數的例子(但名稱較短!)。它是用Python編寫的,但我認爲這很容易理解,其他Rx程序員應該清楚它。

# Smallest possible example 
from rx import Observable 
import requests 
stream = Observable.just('https://api.github.com/users') 
stream.map(requests.get) \ 
     .map(lambda raw: raw.json()) \ 
     .SPLIT_ARRAY_INTO_SEPARATE_EVENTS() \ 
     .subscribe(print) 

放在換句話說,我想要像這樣的轉變:

From: 
# --[a,b,c]--[d,e]--|-> 
To: 
# --a-b-c-----d-e---|-> 

回答

5

可以使用SelectMany操作:

stream.SelectMany(arr => arr) 

這將 「扁平化」,你流的事件就像C#LINQ SelectMany運算符一樣可以用來扁平序列的序列。

+0

賓果。謝謝。 SelectMany做到了。 – rharder

1

賓果。謝謝。 SelectMany做到這一點:

from rx import Observable 
import requests 
stream = Observable.just('https://api.github.com/users') 
stream.map(requests.get) \ 
    .map(lambda raw: raw.json()) \ 
    .select_many(lambda x: x) \ 
    .subscribe(print) 
相關問題