@96chlwogur2
Reviews Written
1
Average Rating
5.0
ํ์ง ์ฃผ๋์ด ์๋ฒ ๊ฐ๋ฐ์์ ๋๋ค. 1๋ ๋ ์ฑ ์๋ ์์ ์ ๋๋ค.
Q&A
ํ suspend fun ์ ๋ฐํ๊ฐ์ด ๋ค๋ฅธ suspend fun์ ํ๋ผ๋ฏธํฐ๋ก ์ฐ์ผ ๋
์ ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ์ ์ผ๋ก, ๋ง์ฝ ์๋์ ๊ฐ์ด main ํจ์ ๋ด์์ List๋ฅผ ๋๋ฉด์ apiCall1, apiCall2๋ฅผ ํธ์ถํ์ ๋,๋๊ธฐ์ ์ฝ๋fun main() { val list: List = listOf(Example(1), Example(2)... ,Example(100)) list.forEach { ex -> val job1 = apiCall1(ex) val job2 = apiCall2(job1) } } fun apiCall1(ex: Example): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api A return 1 } fun apiCall2(num: Int): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api B return num + 2 }๋น๋๊ธฐ์ ์ฝ๋fun main(): Unit = runBlocking { val list: List = listOf(Example(1), Example(2)... ,Example(100)) list.forEach { ex -> val job1 = async { apiCall1(ex) } val job2 = async { apiCall2(job1.await()) } } } suspend fun apiCall1(ex: Example): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api A return 1 } suspend fun apiCall2(num: Int): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api B return num + 2 }์ด ์ํฉ์์๋ apiCall2() ์ ์คํ์ ๋ง์ฐฌ๊ฐ์ง๋ก apiCall1() ์ด ์๋ฃ๋ ํ์ ์งํ๋์ง๋ง,๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ ๊ฒฝ์ฐ์๋ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ์์์ apiCall1()์ด ๋๋๋ฉด, apiCall2() ๊ฐ ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ฐ๋ก ๋ค์ ์์์ apiCall1() ์ด ์คํ๋ ๊ฒ์ผ๋ก ์์ํ๋๋ฐ... ํน์ ๋ง์๊น์?forEach ์์ฒด๊ฐ ๋น๋๊ธฐ ํจ์๊ฐ ์๋๋ผ์ ์๋ ์๋ ์๊ฒ ๋ค์...ใ ใ ์ฒซ๋ฒ์งธ ์ง๋ฌธ๊ณผ ๋๋ฒ์งธ ์ง๋ฌธ์ ์ ๋ฆฌํ์๋ฉด,1. ํ suspend fun A()์ ๋ฐํ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ๋ค๋ฅธ suspend fun B()๊ฐ ์์ผ๋ฉด, B์ ์คํ์ A๊ฐ ์ข ๋ฃ๋ ์ดํ์ ์คํ๋๋ฏ๋ก ๋๊ธฐ์ ์ฝ๋์ ๋น๊ตํ์ ๋ ํฐ ์ด์ ์ด ์๋ค?2. ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉด์ suspend fun A, B๋ฅผ ํธ์ถํ์ ๋๋ ๋จ๊ฑด ํธ์ถ๊ณผ ๋ค๋ฅด๊ฒ ๋น๋๊ธฐ ์ฝ๋์ ์ด์ ์ด ์๋ค? (๋ฆฌ์คํธ ํ๋์ ์์์ ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ๋ค ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์์ ์ฒ๋ฆฌ๋ก ๋์ด๊ฐ๋๊ฐ?)์ ๋๋ค.EDIT) ํน์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ฉด ๋ฆฌ์คํธ์ ๊ฐ ์์๋ง๋ค ์๋ก์ด ์ฝ๋ฃจํด์ด ์์ฑ๋์ด ๊ฐ๊ฐ์ ์์๋ฅผ ๋ณ๋ ฌ์ฒ๋ฆฌํ ์ ์์ ๊ฒ์ผ๋ก ๋ณด์๋๋ฐ ๋ง์๊น์? ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ ์ํฉ์ด๋ผ๋ฉด apiCall1, apiCall2๋ suspend fun์ด ์๋์ด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค..!fun main(): Unit = runBlocking { val list: List = listOf(Example(1), Example(2)... ,Example(100)) list.forEach { ex -> launch { val job1 = apiCall1(ex) val job2 = apiCall2(job1) } } } fun apiCall1(ex: Example): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api A return 1 } fun apiCall2(num: Int): Int { // ๋คํธ์ํฌ๋ฅผ ํ๋ ์ด๋ค ์ธ๋ถ api B return num + 2 }