有兩種方法可將計算值保留以備後用。您可以創建一個充當中間變量的BehaviorSubject
,該變量在定義時將具有計算值,或者您可以將可觀察值更新爲新的訂戶以獲得最新結果。
BehaviorSubject intermediateResult = BehaviorSubject.create();
Flowable.combineLatest(info, list, ...)
.subscribe(intermediateResult);
另外,
Observable<Type> intermediateResult = Flowable.combineLatest(info, list, ...)
.replay(1)
.publish();
在這兩種情況下,訂閱intermediateResult
將獲得最新的計算值,如果存在。
編輯:隨時進行功能選擇:
Observable<FunctionSelector> fnSelector;
Observable<Type> intermediateResult =
Flowable.combineLatest(info, list, fnSelector,
(information, listToUse, selector) ->
getFunction(selector).apply(information, listToUse))
.replay(1)
.publish(1);
我不想緩存。當需要時,我需要能夠得到兩種流動劑的組合結果。 BiFunction受外部變量影響 –
如果您需要更改函數,那麼您可能希望將外部變量綁定到可觀察值,並將其作爲輸入鏈。我會盡快修改我的答案。 –
會創造一個像這樣的作品的第三個流動:? https://stackoverflow.com/questions/42428472/my-subscribers-onnext-and-oncomplete-functions-do-not-run-when-i-call-onnext-wi @BobDalgleish –