亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.zip方法中可觀察數的數量是否有限制?

.zip方法中可觀察數的數量是否有限制?

神不在的星期二 2021-03-29 11:53:24
在Kotlin的zip方法中,用作參數的Observable數量似乎受到限制。如果這是正確的,最好的選擇是什么?例如,當我使用9個參數時,它可以按預期工作。當我添加第十個參數時,我收到錯誤消息:無法推斷該參數的類型。請明確指定Observable.zip(            //TODO: parameterize exchange symbols based on pair            methodOne() as Observable<Any>),            methodTwo() as Observable<Any>),            methodThree() as Observable<Any>),            methodFour() as Observable<Any>),            methodFive() as Observable<Any>),            methodSix() as Observable<Any>),            methodSeven() as Observable<Any>),            methodEight() as Observable<Any>),            methodNine() as Observable<Any>),            { oneResult, twoResult, threeResult, fourResult, fiveResult, sixResult, sevenResult, eightResult, nineResult ->                    //logic here applying computation to results            })            .subscribe(                    {},                    {                        println(String.format("Error: %s", it.message))                    })            .unsubscribe()}
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

RxJava僅使用最多支持9個不同的源zip。除此之外,您還必須使用zip(Iterable<ObservableSource>, Func<Object[],R>)方法并將Object[]back的每個元素轉換為其各自的類型。

返回一個Observable,該數組發出指定combiner函數的結果,該函數應用于Iterable其他ObservableSources依次發出的項的組合。zip按嚴格順序應用此功能,因此new發出的第一項ObservableSource將是應用到每個源ObservableSources發出的第一項的函數的結果;new發出的第二個項目ObservableSource將是每個ObservableSources發出的應用于第二個項目的函數的結果;等等。

ObservableSource<R>從zip返回的結果將調用發出最少項目的源onNextonNext調用次數ObservableSource。

如果其中一個來源的資源比其他來源的資源短,而其他來源則更容易完成,那么操作員將按照其指定的順序訂閱其來源,并熱切地完成操作。因此,其他來源可能永遠無法運行完成(因此無法調用doOnComplete())。如果光源長度完全相同,也會發生這種情況。如果源A完成并且B已被消耗并即將完成,則操作員將檢測到A將不再發送其他值,它將立即處置B。例如:

zip(Arrays.asList(range(1, 5).doOnComplete(action1), range(6, 5).doOnComplete(action2)), (a) -> a)

action1將被調用,但action2不會。要變通解決此終止屬性,請使用doOnDispose(Action)using()在完成或dispose()調用的情況下使用或進行清理。關于方法簽名的注意事項:由于Java不允許使用new創建通用數組T[],因此該操作符的實現必須創建一個Object[]replace。不幸的是,Function<Integer[], R>傳遞給方法會觸發ClassCastException。


查看完整回答
反對 回復 2021-04-14
  • 3 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號