Explain about downstream and upstream in rxJava
I don't really understand the meaning of downstream and upstream in Rxjava.
What does that mean? Is it equivalent to subscribeOn and observableOn?
java android
add a comment |
I don't really understand the meaning of downstream and upstream in Rxjava.
What does that mean? Is it equivalent to subscribeOn and observableOn?
java android
add a comment |
I don't really understand the meaning of downstream and upstream in Rxjava.
What does that mean? Is it equivalent to subscribeOn and observableOn?
java android
I don't really understand the meaning of downstream and upstream in Rxjava.
What does that mean? Is it equivalent to subscribeOn and observableOn?
java android
java android
edited Nov 23 '18 at 7:21
Rene Knop
1,3433722
1,3433722
asked Nov 23 '18 at 6:49
miho39miho39
171520
171520
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn
and observeOn
. subscribeOn
and observeOn
are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn
is affecting its upstream and downstream. For example, subcsribeOn
on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn
only affecting downstream. observeOn
on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441858%2fexplain-about-downstream-and-upstream-in-rxjava%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn
and observeOn
. subscribeOn
and observeOn
are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn
is affecting its upstream and downstream. For example, subcsribeOn
on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn
only affecting downstream. observeOn
on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
add a comment |
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn
and observeOn
. subscribeOn
and observeOn
are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn
is affecting its upstream and downstream. For example, subcsribeOn
on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn
only affecting downstream. observeOn
on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
add a comment |
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn
and observeOn
. subscribeOn
and observeOn
are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn
is affecting its upstream and downstream. For example, subcsribeOn
on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn
only affecting downstream. observeOn
on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
We can divide stream by seeing its position based on an operator.
upstream downstream
source <--------- operator -----------> consumer/further operators
So from top to the operator, we call it upstream.
From operator to the bottom, we call it downstream.
It's not equivalent to subscribeOn
and observeOn
. subscribeOn
and observeOn
are only operators. However, we can distinguish the behaviour of that two operators by using downstream and upstream concept.
subscribeOn
is affecting its upstream and downstream. For example, subcsribeOn
on this code
just("Some String")
.map(str -> str.length())
.subsribeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
will make all the stream (up and down) run on computation thread.
On the other hand, observeOn
only affecting downstream. observeOn
on this code
just("Some String")
.map(str -> str.length())
.observeOn(Schedulers.computation()) // change thread
.map(length -> 2 * length)
.subscribe(number -> Log.d("", "Number " + number))
only make the downstream run on computation thread.
I hope the explanation will help.
answered Dec 25 '18 at 10:57
KhardaKharda
560516
560516
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441858%2fexplain-about-downstream-and-upstream-in-rxjava%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown