2017-07-20 97 views

回答

0

在您的圖中,subject.onNext(3)只能從不同的線程調用,因爲subject.onNext(2)尚未返回。但是,這是對被動合同的違反,因爲您不允許進行重疊調用(onNext/onComplete/onError)。雖然在很多情況下這種行爲不會造成傷害,但像.serialize()這樣的運營商可以幫助將其重新規範化。

總之,在你的情況下,它不確定。

+1

其實,你會得到3,因爲在內部保存的最新值'BehaviorSubject'是原子,但在其他方面的重疊,通話可能陷入困境的發射狀態向用戶,因此確實,這是一個未定義的行爲。如果沒有訂閱者,不會造成任何傷害,但是如果有來自同一線程的併發調用或重入onNext調用的機會,則仍然需要使用'.toSerialized()'。 – akarnokd

相關問題