在以下情况下使用Observable.justvs 时我得到相同的输出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());
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想只是just假设发出一个项目,from并在某种列表中发出项目.有什么不同 ?我也注意到这一点just并且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)失败了.同样,我必须将它包装在一个列表或数组中.我只是好奇他们为什么不能定义无限的论点.
更新:我试验过,看到它just不采用数组结构,它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);
}
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
我假设这是明显的区别,那么,对吗?
Ada*_*m S 82
当你通过它时Iterable(例如a List)查看每个行为时,差异应该更清楚:
Observable.just(someList)会给你1次排放 - a List.
Observable.from(someList) 将给你N排放 - 列表中的每个项目.
传递多个值的能力just是一种便利功能; 以下功能相同:
Observable.just(1, 2, 3);
Observable.from(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
just()和之间的区别from():
虽然所有just()和from()似乎是做同样的工作,不同之处排放的数量。
just()–仅产生1次发射。Observable.just(new Integer[]{1, 2, 3})用Observer回调发出一个发射onNext(Integer[] integers)
fromArray()–产生N排放。Observable.fromArray(new Integer[]{1, 2, 3})用Observer回调使三个发射为onNext(Integer integer)
| 归档时间: |
|
| 查看次数: |
11090 次 |
| 最近记录: |