Today, What I learned?
๋ง์ดํ์ด์ง์ ํด๋น ์ ์ ํ๋ก์ ํธ ๋ฆฌ์คํธ๋ฅผ ํํฐ๋งํ๊ธฐ ์ํ ๊ธด ์ฌ์ ....
๋๋ฅผ ๋น๊ธ ๋์๋ฒ๋ฆฌ๊ฒ ๋ง๋ค์๋ Promise์ ํด๊ฒฐํ ์ ์์๋ Promise.all์ ๋ํด ์์๋ณธ๋ค.
๋ฐ๋จ, Promise ๋ฐฐ์ด
์ฐ๋ฆฌ ํ๋ก์ ํธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์กฐ๊ธ ๋ณต์กํ ํธ์ธ๋ฐ..
๋ง์ดํ์ด์ง์์์ ํ๋ก์ ํธ ๋ฆฌ์คํธ๋ ํ์ฑํ๋ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ผ์ ๊ทธ์ ํด๋นํ๋ ํ๋ก์ ํธ๋ค์ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ค.
์ฐธ์ฌํ ํ๋ก์ ํธ๋ผ๋ฉด ์ง์ํ ํ๋ก์ ํธ๋ง ๋ณด์ฌ์ฃผ๋ ์..
๋ญ ์ฌ๊ธฐ๊น์ง์ผ ๋ณดํต์ ํํฐ๋ง์ด์ง ์๋? ์ถ์ ์ ์์ง๋ง ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋
์ป์ด์จ ๊ฐ๊ฐ์ ๋ฌธ์์์ด๋ ๋ฆฌ์คํธ๋ฅผ ํตํด์ ๊ฐ๊ฐ์ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ๋ค์ ์กฐํํด์ผ ํ๋.. ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ด๋ฐ๊ฐ์?๋ผ๊ณ ๋ฌป๋๋ค๋ฉด ์ฐ๋ฆฌ ํ์ ๋ชจ๋ ํ๋ก ํธ์๋์ด๊ธฐ ๋๋ฌธ์ด๊ณ .. NoSQL์ธ ํ์ด์ด๋ฒ ์ด์ค์ ํ์ด์ด์คํ ์ด๋ฅผ ์ด์ฉ ์ค์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ํ์ฌ๋ก์ ์ต์ ์ด์๋ค!๋ผ๊ณ ๋ตํ๊ฒ ๋ค...
findWithCollectionName
๋ผ๋ ํจ์๋ฅผ ํตํด ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ฐ..
๋ฌธ์ ๋ map
์์์ ์ ํจ์๋ฅผ ํตํด ๋ฐํํ๋ฉด Promise
์ ๋ฐฐ์ด์ด ๋ฐํ๋๋ค๋ ์ ์ด์๋ค.
[Promise, Promise, ... ]
์ด๋ ๊ฒ.. ๐
((findWithCollectionName
์ด ํจ์๊ฐ ๋น๋๊ธฐ ํจ์์๊ธฐ ๋๋ฌธ์ Promise๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋น์ฐํ์))
์ฌ๋ฌ ๊ธ๋ค์ ์ฐธ๊ณ ํด์ ํจ์๋ฅผ ๋ฐ๊นฅ์ผ๋ก๋ ๋นผ๋ณด๊ณ .. ๋ณ ์๋๋ฅผ ๋ค ํ๋๋ฐ๋ ์ง๊ฒน๊ฒ ๋ฐํ๋๋ Promise ๋ฐฐ์ด์ ์ ๋ง ๊ณ ํต ๊ทธ ์์ฒด์๋ค.. ํํ
๋ฉ๋ถ์ด ์ค๋ค๋ณด๋ ๊ตฌ๊ธ๋ง์ ์ด๋ป๊ฒ ํด์ผ ํ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ด์ ํ์๋ถ๋ค์๊ฒ ๋์์ ์์ฒญ!..
ํ์ฅ๋์๊ฒ์ Promise.all
์ ์ด์ฉํด๋ณด๋ผ๋ ์กฐ์ธ์ ๋ฐ์๋ค.
Promise.all
Promise.all()
์ ํ๋ก๋ฏธ์ค ๋ฐฐ์ด ์์์ ๋ชจ๋ ํ๋ก๋ฏธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์, ๋ชจ๋ ํ๋ก๋ฏธ์ค์ ๊ฒฐ๊ณผ ๊ฐ์ ์ต์ข
์ ์ผ๋ก ๋ฐํํ๋ค..!
Promise.all()
์ธ์๋ ์ค๊ฐ์ ํ๋๋ผ๋ ๊ฑฐ๋ถ๋๋ค๋ฉด ์ค๋จ๋๋ Promise.race()
๋ฉ์๋๊ฐ ์์๋ค.
๋๋ ์ค๊ฐ์ ๋ฐํ๋๋ฉด ์ ๋์๊ธฐ ๋๋ฌธ์ ์ปค์คํ ํ ์ ํจ์๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ๋๋..
// ํ์ฌ ์ ํ๋ ํญ์ ํ๋ก์ ํธ ๋ฆฌ์คํธ ์กฐํ ํจ์
const getActiveProjects = async (params: any) => {
const [_, pidList] = params.queryKey;
const data = await Promise.all(
pidList.map((pid: string) => findWithCollectionName('post', pid)),
);
const filteredData = data.filter((item) => item !== undefined);
return filteredData;
};
๋๋์ด ๋ด๊ฐ ์ฐพ๋ ์จ์ ํ ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์์๋ค!!!!!! (๊ฐ๋ ๊ทธ ์ก์ฑ)
์ด ํจ์ ์ญ์ ๋น๋๊ธฐ ํจ์์๊ธฐ ๋๋ฌธ์.. ์ค์ ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ useQuery
๋ฅผ ์ด์ฉํด์ ๊ฐ์ ธ์๋ค.
const { data: activeProjectsData }: any = useQuery({
queryKey: ['myProjects', currentPidList],
queryFn: getActiveProjects,
staleTime: staleTime.myProjects,
});
์ผ๋จ ์ด๋ ๊ฒ ๋ ๊ฐ์ ํญ์ ๋ํ ํ๋ก์ ํธ ๋ฆฌ์คํธ๋ ์ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋์๋ค.
ํ์ง๋ง ๋๋ ๋๊น์ง ๋๋ ๊ฒ ์๋๋ค ใ
ใ
ใ
...
2ํธ์์ ๊ณ์..
์ฐธ๊ณ
'๐ Studying > ๐ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React.lazy ์ Suspense (0) | 2023.02.20 |
---|---|
[React] ํ๋ก์ ํธ ๋ฆฌ์คํธ ํํฐ๋ง ์ฌ์ (2) - 3์ค ์ค์ฒฉ ๊ฐ์ฒด (0) | 2023.02.17 |
[React] ์ปค์คํ ๋ชจ๋ฌ ๋ง๋ค๊ธฐ (0) | 2023.02.15 |
[React] input type = 'radio', 'checkbox'์ ์ํ๊ด๋ฆฌ (0) | 2023.02.14 |
[Project Detto] ๊ธฐ์ ์คํ ์ค๋ณต ์ฒ๋ฆฌ์ ๋ํ ๊ณ ์ฐฐ (0) | 2023.02.10 |
Comment