๐๋จ์ผ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํ ๊น์,
์์ ๊ณต๋ถํ just()๋ create()๋ ๋จ์ผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๋ก ๋ค๋ฃจ์ด ๋ณด์๋๋ฐ์. ์ด๋ฒ์๋ ๋จ์ผ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง
์ฆ fromXXX() ๊ณ์ด ํจ์์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
fromArray() ํจ์
Integer[] arr = {100,200,300};
Observable<Integer> source = Observable.fromArray(arr);
source.subscribe(System.out::println);
๐int [] ๋ฐฐ์ด ์ฌ์ฉํ๊ธฐ
int[] ๋ฐฐ์ด์ ์ค์ ๋ก ๊ทธ๋๋ก ๋ฃ์ผ๋ฉด ์ฌ๋ฐ๋ฅธ ์คํ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ต๋๋ค. ⇒ toIntegerArray()๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
int[] intArray = {400,500,600};
Observable<Integer> source = Observable.fromArray(toIntegerArray(intArray));
source.subscribe(System.out::println);
fromIterable() ํจ์
- Iterable ์ธํฐํ์ด์ค๋ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค.
- Iterator ์ธํฐํ์ด์ค๋ ์ดํฐ๋ ์ดํฐ ํจํด์ ๊ตฌํํ ๊ฒ์ผ๋ก ๋ค์์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์๋์ง์ ๊ทธ ๊ฐ์ ์ป์ด์ค๋ ๊ฒ๋ง ๊ด์ฌํ ๋ฟ ํน์ ๋ฐ์ดํฐ ํ์ ์ ์์กดํ์ง ์์ต๋๋ค.
- hasNext()์ next() ๋ฉ์๋๊ฐ ์กด์ฌํฉ๋๋ค.
- ๋ํ์ ์ธ ํด๋์ค : ArrayList, ArrayBlockingQueue, HashSet, LinkedList, Stack, TreeSet, Vector ๋ฑ์ด ์กด์ฌํฉ๋๋ค.
List<String> names = new ArrayList<>();
names.add("Jerry")
names.add("William")
names.add("Bob")
Observable<String> source = Observable.fromIterable(names);
source.subscribe(System.out::println)
fromCallable() ํจ์ : ๋น๋๊ธฐ ํด๋์ค๋ ์ธํฐํ์ด์ค์์ ์ฐ๋
Callable<String> callable = () -> {
Thread.sleep(1000);
return "Hello Callable";
};
Observable<String> source = Observable.fromCallable(callable);
source.subscribe(System.out::println);
*Callable์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๊ณ Executor ์ธํฐํ์ด์ค์ ์ธ์๋ก ํ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ์คํ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
fromFuture() ํจ์
- Future์ ๋์์ฑ API๋ก ๋น๋๊ธฐ ๊ณ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ๋ณดํต Executor ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ Callable ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฃ์ด Future ๊ฐ์ฒด ๋ฐํํฉ๋๋ค.
Future<String> future = Executors.newSingleThreadExecutor().submit(() -> {
Thread.sleep(1000);
return "Hello Future";
});
Observable<String> source = Observable.fromFuture(future);
source.subscribe(System.out::println);
fromPublisher() ํจ์
Publisher<String> publisher = (Subscriber<? super String> s) -> {
s.onNext("hello Observable.fromPublisher()");
s.onComplete();
};
Observable<String> source = Observable.fromPublisher(publisher)
source.subscribe(System.out::println);
*Publisher ์ธํฐํ์ด์ค์ ํจํค์ง๋ org.reactivestreams
'RxJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[RxJava] Observable - (1) (0) | 2022.10.21 |
---|---|
[RxJava] ๊ธฐ๋ณธ ๊ฐ๋ (0) | 2022.10.21 |