Closed L-j-h-c closed 1 year ago
โณ๏ธ ์์ ํ ๋ธ๋์น
๐ท ์์ ํ ๋ด์ฉ
Request๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ฑ๊ธํค ๊ฐ์ฒด์ ์ ์ฅํ๊ณ ์๋ก์ด ๋ฆฌํ์คํธ๊ฐ ์ค๋ฉด cancel()ํด์ฃผ๋ ๋ฐฉ์์ ๋๋ค.
Plugin์ onfail์์ ๋คํธ์ํฌ ์๋ฌ ํ์ ์ด ๋ ์, errorCode๊ฐ 6์ธ ๊ฒฝ์ฐ(cancel())์ ๋คํธ์ํฌ ํ์ ์ ๋์ฐ์ง ์๋๋ก ํ์ต๋๋ค.
NoticeAPI์๋ ์ํ์ ์ผ๋ก ์ ์ฉํ๊ณ , throttle ์ฃผ์์ฒ๋ฆฌ ํด๋์์ต๋๋ค.
Container ์ ์ฉ๊ณผ๋ ๊ด๋ จ ์์ด, ์คํ์ปค ํ๋๊ณผ ์๋ด ํญ์ ๋ฒ๊ฐ์ ์ด๋ํ๋ ๊ฒฝ์ฐ ๋ฌดํ์คํฌ๋กค๋ก ์ธํ ์ธ๋ฑ์ค ์๋ฌ๊ฐ ์กด์ฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
RequestContainer์ Container๋ฅผ Dictionary ํํ๋ก ์ ํํ๊ณ , ํน์ API๊ฐ ์ด๋ค ๋ถ๋ฅ์ ์ํ๋์ง ๊ตฌ๋ถํ ์ ์๋๋ก ์ด๊ฑฐํ์ ์์ฑํ์ต๋๋ค. APIType์ ๊ด๋ จ๋ request๋ค๋ง cancelํ๋ ์์ผ๋ก ํจ์จ์ฑ์ ๋์์ต๋๋ค.
๋ณด๊ดํจ์์๋ 3๊ฐ์ง API๊ฐ ๋์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋จ์ํ API์์ doCleanRequest()๋ฅผ ํ๋ ๊ฒฝ์ฐ ๋ง์ง๋ง์ ํธ์ถ๋ API๋ก ์ธํด ์์ ํธ์ถ๋ 2๊ฐ์ง(์งํ์ค, ์คํจ) API์ request๊ฐ cancel๋์ด๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ์ด๋ฅผ ๋ถ๊ธฐ์ฒ๋ฆฌํ์ต๋๋ค.
์ 2๋ฒ์ ๊ณผ์ ์์ ์๊ฒ๋ ์ฌ์ค์ dispatchGroup์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ group.enter์ ์์ ์ ์ฌ๋ฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ํตํด์ ๋์์ ์งํ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ API์๋ง doCleanRequest๋ฅผ ํ๋ฉด 2์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ฒ ๋ค๋ ์์๊ณผ ๋ฌ๋ฆฌ ์ฒซ ๋ฒ์งธ API์์ doCleanRequest๊ฐ ์ํ๋๊ธฐ ์ ์ ๋ค๋ฅธ ๋น๋๊ธฐ ๋ธ๋ก์ด ๋จผ์ request๋ก ๋ง๋ค์ด์ ธ์ group์ด leave๋ฅผ ํ์ง ๋ชปํ๋ ์ํฉ์ด ์๊ฒผ์ต๋๋ค. ๋ฐ๋ผ์ Ongoing API์ Completion์ ๋๋จธ์ง API ๋ธ๋ก์ ์ง์ด ๋ฃ์๊ณ , ๊ทธ๋ฌ๋๋ ๋ฌดํ ๋ก๋ฉ(leave๋ฅผ ํ์ง ๋ชปํ๋ ์ํฉ)์ด ํด๊ฒฐ๋์์ต๋๋ค.
๊ธฐ์กด ์๋ฆผ ๋ทฐ์์ ์คํ์ปค ํ๋์ ์ปฌ๋ ์ ๋ทฐ๋ฅผ ์คํฌ๋กค ์์ผ ๋๊ณ ์๋ด ํญ์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค์ ์คํ์ปค ํ๋ ํญ์ ๋๋ฅด๋ฉด ์ธ๋ฑ์ค ์๋ฌ๊ฐ ์๊ฒผ์ต๋๋ค. ์ดํด๋ณด๋ ์ ์ด ์์ฑ๋๋ ์์ค์ list๊ฐ removeAll()๋์ด ์๊ธฐ๋ ๋ฌธ์ ์๊ณ , API Completion ์์ ์ removeAllํ๋ ๊ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๐ฅPull requests
โณ๏ธ ์์ ํ ๋ธ๋์น
๐ท ์์ ํ ๋ด์ฉ
์ฐธ๊ณ ์ฌํญ
Request๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ฑ๊ธํค ๊ฐ์ฒด์ ์ ์ฅํ๊ณ ์๋ก์ด ๋ฆฌํ์คํธ๊ฐ ์ค๋ฉด cancel()ํด์ฃผ๋ ๋ฐฉ์์ ๋๋ค.
Plugin์ onfail์์ ๋คํธ์ํฌ ์๋ฌ ํ์ ์ด ๋ ์, errorCode๊ฐ 6์ธ ๊ฒฝ์ฐ(cancel())์ ๋คํธ์ํฌ ํ์ ์ ๋์ฐ์ง ์๋๋ก ํ์ต๋๋ค.
NoticeAPI์๋ ์ํ์ ์ผ๋ก ์ ์ฉํ๊ณ , throttle ์ฃผ์์ฒ๋ฆฌ ํด๋์์ต๋๋ค.
Container ์ ์ฉ๊ณผ๋ ๊ด๋ จ ์์ด, ์คํ์ปค ํ๋๊ณผ ์๋ด ํญ์ ๋ฒ๊ฐ์ ์ด๋ํ๋ ๊ฒฝ์ฐ ๋ฌดํ์คํฌ๋กค๋ก ์ธํ ์ธ๋ฑ์ค ์๋ฌ๊ฐ ์กด์ฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
10/13 ์ถ๊ฐ ์์ ์ฌํญ
RequestContainer์ Container๋ฅผ Dictionary ํํ๋ก ์ ํํ๊ณ , ํน์ API๊ฐ ์ด๋ค ๋ถ๋ฅ์ ์ํ๋์ง ๊ตฌ๋ถํ ์ ์๋๋ก ์ด๊ฑฐํ์ ์์ฑํ์ต๋๋ค. APIType์ ๊ด๋ จ๋ request๋ค๋ง cancelํ๋ ์์ผ๋ก ํจ์จ์ฑ์ ๋์์ต๋๋ค.
๋ณด๊ดํจ์์๋ 3๊ฐ์ง API๊ฐ ๋์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋จ์ํ API์์ doCleanRequest()๋ฅผ ํ๋ ๊ฒฝ์ฐ ๋ง์ง๋ง์ ํธ์ถ๋ API๋ก ์ธํด ์์ ํธ์ถ๋ 2๊ฐ์ง(์งํ์ค, ์คํจ) API์ request๊ฐ cancel๋์ด๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ์ด๋ฅผ ๋ถ๊ธฐ์ฒ๋ฆฌํ์ต๋๋ค.
์ 2๋ฒ์ ๊ณผ์ ์์ ์๊ฒ๋ ์ฌ์ค์ dispatchGroup์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ group.enter์ ์์ ์ ์ฌ๋ฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ํตํด์ ๋์์ ์งํ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ API์๋ง doCleanRequest๋ฅผ ํ๋ฉด 2์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ฒ ๋ค๋ ์์๊ณผ ๋ฌ๋ฆฌ ์ฒซ ๋ฒ์งธ API์์ doCleanRequest๊ฐ ์ํ๋๊ธฐ ์ ์ ๋ค๋ฅธ ๋น๋๊ธฐ ๋ธ๋ก์ด ๋จผ์ request๋ก ๋ง๋ค์ด์ ธ์ group์ด leave๋ฅผ ํ์ง ๋ชปํ๋ ์ํฉ์ด ์๊ฒผ์ต๋๋ค. ๋ฐ๋ผ์ Ongoing API์ Completion์ ๋๋จธ์ง API ๋ธ๋ก์ ์ง์ด ๋ฃ์๊ณ , ๊ทธ๋ฌ๋๋ ๋ฌดํ ๋ก๋ฉ(leave๋ฅผ ํ์ง ๋ชปํ๋ ์ํฉ)์ด ํด๊ฒฐ๋์์ต๋๋ค.
๊ธฐ์กด ์๋ฆผ ๋ทฐ์์ ์คํ์ปค ํ๋์ ์ปฌ๋ ์ ๋ทฐ๋ฅผ ์คํฌ๋กค ์์ผ ๋๊ณ ์๋ด ํญ์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค์ ์คํ์ปค ํ๋ ํญ์ ๋๋ฅด๋ฉด ์ธ๋ฑ์ค ์๋ฌ๊ฐ ์๊ฒผ์ต๋๋ค. ์ดํด๋ณด๋ ์ ์ด ์์ฑ๋๋ ์์ค์ list๊ฐ removeAll()๋์ด ์๊ธฐ๋ ๋ฌธ์ ์๊ณ , API Completion ์์ ์ removeAllํ๋ ๊ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๐ ๊ด๋ จ ์ด์