使用时我得到相同的输出Observable.just
vs Observable.from
在以下情况下:
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());
}
});
}
我想just
应该只是发出一个项目并且from
是在某种列表中发出项目。有什么不同 ?我还注意到just
and from
只接受有限数量的参数。所以Observable.just(1,2,3,4,5,6,7,8,-1,-2)
还好但是Observable.just(1,2,3,4,5,6,7,8,-1,-2,-3)
失败。同样适用于from
,我必须将其包装在列表或数组中。我只是好奇为什么他们不能定义无限的参数。
更新:我进行了实验并看到了这一点just
不采用数组结构,它只采用参数。from
需要一个集合。所以以下适用于from
但不是为了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);
}
}
});
}
});
}
我认为这是明显的区别,对吗?