2016-09-27 70 views
0

有一個快速的問題:我有一個Variable<[Session]>,其中SessionRxSwift flatMap最新一次不用設置

class Session { 
    ... 
    var rx_serverRequestable: Driver<SessionRequestable> 
    ... 
} 

其中每個會話具有所有需要傳遞的信息時發出。接下來事件到後臺,我希望能夠flatMapLatest會話的陣列上,並且這樣做:

let sessions: Variable<[Session]> 
sessions 
    .flatMapLatest { sessions in sessions.map { $0. rx_serverRequestable } } 
    .flatMap { $0.requestFromServer() } 

但我只想要一次要求每個會話。有兩種方法可以看到我的當前實現失敗: 1. flatMapLatest獲取新的會話數組,可能會處理仍在進行中的服務器的請求 2.每當會話具有所需的全部信息時,會調用rx_serverRequestable從服務器加載,所以它會被多次調用,每次會話加載任何新的信息。我只想要第一次請求會話,我應該使用類似.multicast還是.replay(1)

解決這兩個問題的任何指針,或切換我的方法?

+0

你打算由'sessions.flatMapLatest ... flatMap'調用產生的結果做什麼來解決? –

+0

將從服務器收到的信息分配回會話中的實例變量 – AndrewSB

回答