RxJava - Just vs From

j2e*_*nue 32 java rx-java

在以下情况下使用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)


Zub*_*man 8

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)