簡體   English   中英

RxSwift-映射后函數的調用順序

[英]RxSwift - call sequence of a function after Mapping

我試圖映射成功完成后調用的函數。 可觀察到的從由映射現有流創建。 在映射塊內,我訂閱以獲取映射到最終類型的輸出。 隨着更新的流,我正在考慮調用該函數。 但是在我訂閱並將其映射到更新的流之前會調用該函數。

這是一個示例代碼:

let updatedDataStream = dataStream
            .observeOn(MainScheduler.instance)
            .map { (data) -> ViewData? in

            guard var unknownData = data as? UnknownDataType,
                let location = unknownData.dataPoints.first?.location else  {
                    return data
                }

                let dataModel = DataModel(x: location.x, y: location.y)

                self.dataStore.localStore?
                    .entity(forID: DataModel.entityID)
                    .filter({$0?.status == .Success})
                    .take(1)
                    .unwrap()
                    .subscribe(onNext: { (localDataModel) in

                        guard let value = localDataModel.dataValue, value.count > 0 else {
                            return
                        }

                        unknownData.value = value

                    }).disposed(by: self.disposeBag)
                return unknownData
        }

        self.attachUpdatedData(updatedDataStream)

attachUpdatedData(_:)預期之后,才會檢索updatedDataStream被調用。 通過以上的實施attachUpdatedData(_:)首先之前的數據被映射到一個新值調用。 有人可以指出我正確的方向嗎?

在地圖上訂閱(或任何形式的轉換)是不行的。 您將在'dataStream'的每個項目上創建一個新的訂閱,並且實際上將失去對數據流的所有控制。 同樣,在執行“ onNext:”之前,很可能從“ .map()”返回“ unknownData”。

您想達到什么目的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM