Kevin์ ์๊ธฐ ์ฌ์ด RxJava 1๋ถ
๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๋ ์ง์ ์ฅ๋ฒฝ์ ๋๊ณ ์ถ์ผ์ ๊ฐ์? Kevin์ ์๊ธฐ ์ฌ์ด RxJava๊ฐ ๊ทธ ๋ฒฝ์ ๋์ ์ ์๋ ํ์ ํค์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๊ฐ์ 743๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ
- ๋ฏธํด๊ฒฐ
Single๊ณผ ๊ด๋ จํด ์ฌ์ญค๋ณด๊ณ ์ถ์ ๋ถ๋ถ์ด ์์ต๋๋ค!
์๋ ํ์ธ์ ์ ์๋! ํํ์ด ๊ฐ์ ์ ๋ฃ๊ณ ์์ต๋๋ค.๊ฐ์ ์๊ฐ ๋์ค, ๊ถ๊ธํ ์ ์ด ์์ด ์ง๋ฌธ๋๋ฆฝ๋๋ค! Single์ ์ ํต์ ์ธ client - server ๋ฐฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ๋ค๊ณ ๋ง์ํด์ฃผ์ จ์ต๋
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-Streamsqpal1zm23
ใป
0
257
2
- ํด๊ฒฐ
cold/hot publisher ์์ ์ฝ๋์ ๊ด๋ จํด ์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์! ๊ฐ์ ์ ๋ฃ๊ณ ์์ต๋๋ค. ๋ณธ๊ฒฉ์ ์ธ ์ฒซ ๊ฐ์๋ถํฐ ๊ถ๊ธํ ์ ๋ค์ด ๋ง์ ์ง๋ฌธ ๋๋ฆฌ๊ฒ ๋์์ต๋๋ค ใ .. ์ ๋ ํด๋น ๊ฐ์๋ฅผ ๋ฃ๊ฒ ๋ ์ฌ์ ๊ฐ ์นํ๋ญ์ค ๊ฐ์ด ๋น๋๊ธฐ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ด์ฌ์ด ๋ง์์ ์์ฐ์ค๋ฝ๊ฒ ๊ธฐ๋ณธ๋ถํฐ ๋ค์ง๊ณ ์
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-Streamsqpal1zm23
ใป
0
353
1
- ๋ฏธํด๊ฒฐ
CompletableObserver ํด๋์ค์ ๋๋ค์ ํํ๊ด๋ จ
์๋ ํ์ธ์๋๋ค์์ ์ธํฐํ์ด์ค์์ ๊ตฌํํด์ผํ ๋ฉ์๋๊ฐ ํ๋๋ง ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ์ผ๋ก ์๊ณ ์๋๋ฐcompletable.subscribeOn(Schedulers.computation()) .subscribe(new
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-Streams๋ฏธ๋ฏน
ใป
0
287
1
- ๋ฏธํด๊ฒฐ
1๊ฐ์ ์์๋ก ๋ณด์ฌ์ฃผ์ ToDoSample ์ฝ๋์ ๊ดํด ์ง๋ฌธ ๋๋ฆฝ๋๋ค!
์๋ ํ์ธ์! ์ด์ ๋ง RxJava๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์์ํ์์ต๋๋ค ใ ใ 1๊ฐ 14:20์ด ์ฆ์์ ์์๋ก ๋ณด์ฌ์ฃผ์ ToDoSample.class์ฝ๋์ ๋ํด ์ง๋ฌธ ๋๋ฆฝ๋๋ค.java app์ main thread๊ฐ ์ข ๋ฃ๋์ด๋ ๋ค๋ฅธ non-deamon th
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-Streamsqpal1zm23
ใป
0
349
1
- ๋ฏธํด๊ฒฐ
๋ฐ์ดํฐ ๊ฒฐํฉ ์ฐ์ฐ์ / merge ๊ด๋ จ ์ง๋ฌธ
์๋ ํ์ธ์ ๊ฐ์ฌ๋!! RxJava ๊ฐ์ ์ด์ฌํ ๋ฃ๊ณ ์์ต๋๋ค. ๋ค๋ฆ์ด ์๋๋ผ Merge ํจ์๋ฅผ ์คํํ ๋ Observable์ merge() ๊ฒฐํฉํ ๋ interval๋ก ์ค์ ํ ์๊ฐ๋งํผ ํต์ง์์ ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํต์ง๋๋ค๊ณ ํ์ จ๋๋ฐ
mergeReactive-StreamsRxJavaReactive Programmingํจ์ํ-ํ๋ก๊ทธ๋๋ฐ์ด๊ท์ฐ
ใป
0
428
1
- ๋ฏธํด๊ฒฐ
DROP ๋ฐฐ์ ์ ๋ต์ ๊ดํ ๊ถ๊ธ์ฆ
์๋ ํ์ธ์? DROP ๋ฐฐ์ ์ ๋ต์ ๋ค์ผ๋ฉด์ ์ดํด๊ฐ ์ ๋์ง ์๋ ๋ถ๋ถ์ด ์๊ฒจ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค. ์ด์ ์ ๊ณต์งํด ์ฃผ์ <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.inflearn.com
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐReactive ProgrammingReactive-StreamsRxJavajayon
ใป
0
286
2
- ๋ฏธํด๊ฒฐ
map์์์ TimeUtil.sleep์ ๊ดํ ๊ถ๊ธ์
์๋ ํ์ธ์. ์์ ์ฝ๋๋ฅผ ์ด๊ฒ์ ๊ฒ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์คํํด๋ณด๋ค๊ฐ ๊ถ๊ธํ ์ ์ด ์์ด์ ์ง๋ฌธ๋๋ฆฝ๋๋ค.Observable.range(1, 5) .doOnNext(data -> Logger.log(LogType
RxJavaReactive ProgrammingReactive-Streamsํจ์ํ-ํ๋ก๊ทธ๋๋ฐPARK
ใป
0
212
1
- ๋ฏธํด๊ฒฐ
๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํด์ ๊ฐ์ธ ๋ธ๋ก๊ทธ์ ์ฌ๋ ค๋ ๋ ๊น์?
๊ฐ์ฌ๋ ์๋ ํ์ธ์. ์ต๊ทผ ํ์ฌ์์ reactive streams๋ฅผ ์ฌ์ฉํ๊ฒ ๋์ด ์์ฃผ ์ ์ฉํ๊ฒ ๊ฐ์ ๋ฃ๊ณ ์์ต๋๋ค. ์๋ฒ ๊ฐ์๋ถํฐ ๋๊ปด์ง๋ ์ ์ด ๊ฐ๋ ์ด ์กฐ๊ธ ์ด๋ ค์์ง๋ค๊ณ ์๊ฐํด์, ๊ผผ๊ผผํ๊ฒ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ ๊ฐ์ธ ๊ธฐ์ ๋ธ๋ก๊ทธ์ ๊ฐ์ ๋ด์ฉ๋ค
RxJavaReactive-StreamsReactive Programmingํจ์ํ-ํ๋ก๊ทธ๋๋ฐ์ง์ฐ์
ใป
0
550
2
- ํด๊ฒฐ
TimeUtil.sleep ๊ด๋ จ ์ง๋ฌธ
<span style="background-color: #ecf7f8; color: #212529; font-family: 'Noto Sans KR', -apple-system, 'system-ui', BlinkMacSystemFont, 'Apple SD Goth
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐReactive-StreamsReactive ProgrammingRxJava์๋นต
ใป
0
283
1
- ๋ฏธํด๊ฒฐ
๋ฐฐ์ ์ ๋ต ์ค์์ DROP ์ ๋ต๊ณผ ๊ด๋ จํด์ ์ง๋ฌธ ์์ต๋๋ค.
์๋ ํ์ธ์, ๊ฐ์ ์ง์ง ์ฌ๋ฐ๊ฒ ๋ณด๊ณ ์๋ ์๊ฐ์์ ๋๋ค ^^. <span style="color: #ffffff; font-family: 'Noto Sans KR', -apple-system, 'system-ui', BlinkMacSystemFont,
backpressureํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive ProgrammingReactive-Streams์๋นต
ใป
0
325
1
- ๋ฏธํด๊ฒฐ
Error ๋ฐ์ ์์๋ ๊ณ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
์๋ ํ์ธ์. ๊ฐ์ ์ ์๊ฐ์ค์ธ ์๊ฐ์์ ๋๋ค. ๋ฐ์์จ ๋ฆฌ์คํธ๋ฅผ flatMap์ ํตํด ๊ฐ๊ฐ observable ์์ ์ ๋ง๋ค๊ณ ์์ฐจ์ ์ผ๋ก ์คํํ ๋ ์ค๊ฐ์ ํ๋๊ฐ ์คํจํ๋๋ผ๋ ๊ณ์ ๊ทธ ๋ค์ Observable๋ก ๋์ด๊ฐ๋
Reactive ProgrammingRxJavaReactive-Streamsํจ์ํ-ํ๋ก๊ทธ๋๋ฐjh.park141
ใป
0
680
2
- ๋ฏธํด๊ฒฐ
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ
์๋
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive ProgrammingReactive-Streams์๋ฐํฉ
ใป
1
761
2
- ๋ฏธํด๊ฒฐ
์ฒซ๋ฒ์งธ ๊ฐ์ ๋ถํฐ ์ด๋ฒ๊ฐ์๊น์ง ์๊ฐํ๋ฉด์ ๊ถ๊ธํ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
- ํ์ต ๊ด๋ จ ์ง๋ฌธ์ ๋จ๊ฒจ์ฃผ์ธ์. ์์ธํ ์์ฑํ๋ฉด ๋ ์ข์
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-StreamsReactive Programming๊ฐ๋ค๊ท๊ฐ์ฅ๊ตญ
ใป
0
320
1
- ํด๊ฒฐ
์๋ ํ์ธ์. ์ง๋ฌธ์ด ์์ต๋๋ค.
์ด์ ๊ฐ์๋๋ ๊ถ๊ธํ๋ ๊ฑฐ์๋๋ฐ ๋ฉ์ธํจ์ ๋ง์ง๋ง์ Thread.sleep()์ ์ด๋ค ์ด์ ์์ ํ์ํ ๊ฑด์ง ๊ถ๊ธํฉ๋๋ค. ์๋ ค์ฃผ์ค ์ ์์๊น์...? ๊ฐ์ฌํฉ๋๋ค.
Reactive ProgrammingReactive-StreamsRxJavaํจ์ํ-ํ๋ก๊ทธ๋๋ฐMimorinn
ใป
1
352
1
- ๋ฏธํด๊ฒฐ
logger ๊ฐ ์๋๋ฐ util ํด๋๋ ๊ฐ์ด ๊ฐ๋ค๋์ผ ํ๋์?
์ดํดํ๊ธฐ ์ฌ์ด ๊ฐ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทผ๋ฐ, ์ฝ๋ ์์ฑํด๋ณด๋ฉด์ ๋ฐ๋ผ๊ฐ๊ณ ์๋๋ฐ, Logger๋ถ๋ถ์ด ๊ตฌํ์ด ์๋๊ณ ์ด๊ฑธ ๋ฐ๋ผ๊ฐ๋ณด๋ import com.
loggerํจ์ํ-ํ๋ก๊ทธ๋๋ฐReactive-StreamsRxJavaReactive ProgrammingJaeyoung Park
ใป
0
321
1
- ๋ฏธํด๊ฒฐ
amb ์ฐ์ฐ์
์์ ์์ amb ์ฐ์ฐ์์ ์ ๋ ฅ๊ฐ observable ์ค์์ ๋๋ฒ์งธ, ์ธ๋ฒ์งธ observable์ ๋ฉ์์ง ๋ฐํ ์์ฒด๋ฅผ ์ํ๋๊ฑธ๊น์? amb ์ฐ์ฐ์ ๋ค์ด์ด๊ทธ๋จ๊ณผ ์์ ๋ฅผ ๋ณด๊ณ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์์ํ์ ๋, ๋๋ฒ์งธ, ์ธ๋ฒ์งธ observable์ ๋ฐ์ดํฐ๊ฐ amb()
Reactive-StreamsRxJavaReactive Programmingํจ์ํ-ํ๋ก๊ทธ๋๋ฐ๊ถ์ค์
ใป
0
226
1
- ๋ฏธํด๊ฒฐ
์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์์ง ๊ฐ์ ์ด๊ธฐ๋ผ ์ ์ดํด๋์ง ์๋ ๋ถ๋ถ์ด ์์ต๋๋ค. drop ๋๋ค๋ ์๋ฏธ ๋ฒ๋ ค์ง๋ค๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฅผ subsciber์์ ๋ชจ๋ ์ฒ๋ฆฌ ๋ชปํ๋ค๋ ์๋ฏธ์ธ๊ฐ์? ๊ทธ๋ ๋ค๋ฉด ์ ์ค๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ์ด๋ป๊ฒ ๋๋๊ฑด๊ฐ์? drop๋ ๋ฐ์ดํฐ๋ฅผ ๋ค
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐReactive ProgrammingRxJavaReactive-Streams๊ฐ๋ฐ์ค
ใป
0
216
1
- ํด๊ฒฐ
concatEager( ) ์ฐ์ฐ์์ ๊ดํ์ฌ
์๋ ํ์ธ์, ํด๋น ๊ฐ์์์ <span style="background-color: #ffffff; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helv
RxJavaReactive-StreamsReactive Programmingํจ์ํ-ํ๋ก๊ทธ๋๋ฐ๋ฉ๋๋ฌ๋ฌ์ฟจ
ใป
0
314
1
- ํด๊ฒฐ
Reactive Streams์ ๊ตฌ์ฑ์์๋ค๊ณผ RxJava์ ๊ตฌ์ฑ์์๋ค์ ๊ด๊ณ?
์๋ ํ์ธ์, ๊ฐ์๋ฅผ ๋ณต์ตํ๋ฉด์ ์๋ฌธ์ ์ด ์๊ฒจ ์ง๋ฌธ๋๋ฆฝ๋๋ค RxJava๋ Reactive Streams์ ์ธํฐํ์ด์ค๋ค์ ๊ตฌํํ ๊ตฌํ์ฒด๋ผ๊ณ ์๊ฐ๊ฐ ๋์ด์๋๋ฐ์, Reactive Streams์์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค Publisher, Subs
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐRxJavaReactive-StreamsReactive Programming๋ฉ๋๋ฌ๋ฌ์ฟจ
ใป
1
380
2
- ํด๊ฒฐ
ObservableSequenceEqualExample.java ์์ ์ delay( ) ์ฐ์ฐ์ ์ง๋ฌธ์์ต๋๋ค
์๋ ํ์ธ์, ํด๋น ์์ ์์์ delay( ) ์ฐ์ฐ์๋ฅผ ์ฒซ ๋ฒ์งธ ์ ํ(delay(Long delay, TimeUnit unit))์ผ๋ก ๋ฐ๊ฟ๋ณด์๋๋ฐ, ์ฝ์์ ์ํ ๊ฒฐ๊ณผ ์ถ๋ ฅ์์ด ์ข ๋ฃ๋ฉ๋๋ค. <pre style="background-color: #2
ํจ์ํ-ํ๋ก๊ทธ๋๋ฐReactive-StreamsReactive ProgrammingRxJava๋ฉ๋๋ฌ๋ฌ์ฟจ
ใป
0
302
3






