RxJava๊ธฐ๋ก - Observable(2)

dadaยท2021๋…„ 12์›” 29์ผ
0

RxJava

๋ชฉ๋ก ๋ณด๊ธฐ
3/12

๐Ÿ’๋‹จ์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋Š”?
์•ž์„œ ๊ณต๋ถ€ํ•œ 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

profile
๊ธฐ๋กํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€