J'obtiens le même résultat en utilisant Observable.just
vs Observable.from
dans le cas suivant:
public void myfunc() {
//swap out just for from here and i get the same results,why ?
Observable.just(1,2,3).subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
Log.d("","all done. oncompleted called");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Integer integer) {
Log.d("","here is my integer:"+integer.intValue());
}
});
}
Je pensais que c'était simplement just
supposer d'émettre un seul élément et from
était d'émettre des éléments dans une sorte de liste. Quelle est la différence ? J'ai également noté que just
et from
ne prend qu'un nombre limité d'arguments. alors Observable.just(1,2,3,4,5,6,7,8,-1,-2)
est ok mais Observable.just(1,2,3,4,5,6,7,8,-1,-2,-3)
échoue. Même chose pour de, je dois l'envelopper dans une liste ou un tableau de toutes sortes. Je suis juste curieux de savoir pourquoi ils ne peuvent pas définir d'arguments illimités.
UPDATE: J'ai expérimenté et vu que just
ne prend pas de structure de tableau, il just
prend des arguments. from
prend une collection. donc, ce qui suit fonctionne pour from
mais pas pour just
:
public Observable myfunc() {
Integer[] myints = {1,2,3,4,5,6,7,8,-1,-2,9,10,11,12,13,14,15};
return Observable.just(myints).flatMap(new Func1<Integer, Observable<Boolean>>() {
@Override
public Observable<Boolean> call(final Integer integer) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
if(integer.intValue()>2){
subscriber.onNext(integer.intValue()>2);
}
}
});
}
});
}
Je suppose que c'est la différence évidente, n'est-ce pas?
La différence devrait être plus claire lorsque vous examinez le comportement de chacun lorsque vous lui transmettez une Iterable
(par exemple une List
):
Observable.just(someList)
vous donnera 1 émission - une List
.
Observable.from(someList)
vous donnera N émissions - chaque élément de la liste.
La possibilité de transmettre plusieurs valeurs à just
est une fonctionnalité pratique; les fonctions suivantes sont identiques:
Observable.just(1, 2, 3);
Observable.from(1, 2, 3);
Différence entre just()
et from()
:
Bien que just()
et from()
semblent effectuer le même travail, le nombre d’émissions diffère.
just()
- Ne produit qu'une seule émission. Observable.just(new Integer[]{1, 2, 3})
effectue une émission avec le rappel de l'observateur sous la forme onNext(Integer[] integers)
fromArray()
- Génère des émissions d'azote. Observable.fromArray(new Integer[]{1, 2, 3})
effectue trois émissions avec le rappel de l'observateur sous la forme onNext(Integer integer)
inRxJava Just () operator prend une liste d'arguments et convertit les éléments en éléments observables. Cela prend des arguments entre un et dix (mais le document officiel dit un à neuf, peut-être est-il spécifique à la langue).
Contrairement à just, From () crée un observable à partir d’un ensemble d’éléments utilisant un Iterable, ce qui signifie que chaque élément est émis un à un.
from
fonctionne principalement avec des structures de données (tableaux et itérables) et des contrats à terme. Ainsi, le Observable
obtenu émettra des éléments uniques à partir de ces structures de données ou contrats à terme.
just
traite tout comme élément, qu'il s'agisse d'un élément de tableau ou d'un élément entier. La confusion autour de just
est générée par le fait qu'il existe quelques variantes just
pouvant accepter jusqu'à 10 arguments.
Donc, en fait, vous pouvez interpréter toutes ces variantes just
comme émettant, respectivement, "juste" un élément, ou "seulement" deux éléments, "seulement" trois éléments et ainsi de suite ...