Split SubscribeOn into SubscribeOn/UnsubscribeOn#890
Merged
benjchristensen merged 1 commit intoReactiveX:masterfrom Feb 17, 2014
Merged
Split SubscribeOn into SubscribeOn/UnsubscribeOn#890benjchristensen merged 1 commit intoReactiveX:masterfrom
benjchristensen merged 1 commit intoReactiveX:masterfrom
Conversation
Working with @headinthebox based on discussions at ReactiveX#869 and ReactiveX#880 (comment) we determined that there are times when `unsubscribeOn` behavior is needed. The `subscribeOn` operator can not mix `subscribe` and `unsubscribe` scheduling behavior without breaking the `lift`/`Subscriber` behavior that allows unsubscribing synchronous sources. The newly added `unsubscribeOn` operator will not work with synchronous unsubscribes, but it will work for the targeted use cases such as UI event handlers.
benjchristensen
added a commit
that referenced
this pull request
Feb 17, 2014
Split SubscribeOn into SubscribeOn/UnsubscribeOn
This was referenced Feb 17, 2014
Merged
Member
|
I think this still can not guarantee that unsubscribe is always called in the scheduler. For example, public static void main(String[] args) throws InterruptedException {
Observable.create(new OnSubscribe<Integer>() {
@Override
public void call(final Subscriber<? super Integer> t1) {
final Subscription s = Subscriptions.create(new Action0() {
@Override
public void call() {
System.out.println(Thread.currentThread().getName());
}
});
t1.add(s);
t1.onNext(1);
t1.onNext(2);
t1.onCompleted();
}
}).take(1).observeOn(Schedulers.io()).unsubscribeOn(Schedulers.newThread()).subscribe();
}will output |
Member
|
As you said, it can not work for synchronous unsubscribes, so we still need to write a thread-safe Subscription. I just feel |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Working with @headinthebox based on discussions at #869 and #880 (comment) we determined that there are times when
unsubscribeOnbehavior is needed.The
subscribeOnoperator can not mixsubscribeandunsubscribescheduling behavior without breaking thelift/Subscriberbehavior that allows unsubscribing synchronous sources. The newly addedunsubscribeOnoperator will not work with synchronous unsubscribes, but it will work for the targeted use cases such as UI event handlers.