์ผ๋ง์ ์ JavaScript๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ฐ,
JavaScript์์ forEach
๋ฉ์๋์ async/await
๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋, ์์์น ๋ชปํ ๋์์ผ๋ก ์ฝ๋๊ฐ
์ ๋๋ก ๋์ํ์ง ์๋ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ค.
์ฐพ์๋ณด๋ ์ด๋ forEach
๋ฉ์๋๊ฐ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค.
๋ฌธ์ ์ค๋ช
forEach
๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ์ง๋ง, ํด๋น ์ฝ๋ฐฑ์ด ๋น๋๊ธฐ ํจ์์ผ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค.
์ฆ, async/await
๋ฅผ ์ฌ์ฉํ๋๋ผ๋ forEach
๋ ๊ฐ ์ฝ๋ฐฑ์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์์๋ก ๋์ด๊ฐ๋ค.
์ด๋ forEach
๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์ ๋๋ฌธ์ด๋ค.
์์ ์ฝ๋
๋ค์์ forEach
์ async/await
๋ฅผ ํจ๊ป ์ฌ์ฉํ์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ ์ฝ๋์
๋๋ค:
const asyncOperation = async (num) => {
return new Promise((resolve) => {
setTimeout(() => {
console.log(`Processed ${num}`);
resolve(num);
}, 1000);
});
};
const processArray = async (array) => {
array.forEach(async (num) => {
await asyncOperation(num);
});
console.log('Done processing array');
};
processArray([1, 2, 3, 4]);
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ์์ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ต๋๋ค.
'Done processing array'๊ฐ ๋จผ์ ์ถ๋ ฅ๋๊ณ ๋์ ๊ฐ ์์๊ฐ ์ฒ๋ฆฌ๋๋ค.
์ด๋ forEach
๊ฐ ๋น๋๊ธฐ ํจ์๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ
Done processing array
Processed 1
Processed 2
Processed 3
Processed 4
๋น๋๊ธฐ ์ฝ๋์ ๋ฌธ์ ์
forEach
๋ ์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์๋ค๊ณ ํ๋ค.forEach
์ ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ ์ฆ์ ์คํ๋๋ฉฐ, forEach
๋ ๊ฐ ์ฝ๋ฐฑ ํจ์์ ์๋ฃ ์ฌ๋ถ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
๋ฐ๋ผ์ ์ฝ๋ฐฑ ํจ์ ๋ด์์ async/await
๋ฅผ ์ฌ์ฉํด๋, forEach
๋ ๋น๋๊ธฐ ํจ์์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์์์ ๋ํด ์ฝ๋ฐฑ์ ์คํํ๋ค.
forEach
์ ๋์ ๋ฐฉ์์ ์ดํดํ๊ธฐ ์ํด์๋, forEach
์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๋ ๊ฒ์ด ๋์์ด ๋๋ค.forEach
๋ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๊ณ , ๋ชจ๋ ์ฝ๋ฐฑ์ด ๋น๋๊ธฐ์ ์ด๋ผ๋ฉด, forEach
๋ ์ด๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์ด๋ forEach
๊ฐ Promise
๋ฅผ ๋ฐํํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๊ฒฐ์ฑ
forEach
๋์ for...of
๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ฉด async/await
๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.for...of
๋ ๊ฐ ๋น๋๊ธฐ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ๋ค์ ์์
์ ์์ํ๊ธฐ ๋๋ฌธ์, ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๊ฐ์ ๋ ์ฝ๋
๋ค์์ for...of
๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์ ์ฝ๋์
๋๋ค:
const asyncOperation = async (num) => {
return new Promise((resolve) => {
setTimeout(() => {
console.log(`Processed ${num}`);
resolve(num);
}, 1000);
});
};
const processArray = async (array) => {
for (const num of array) {
await asyncOperation(num);
}
console.log('Done processing array');
};
processArray([1, 2, 3, 4]);
์ถ๋ ฅ ๊ฒฐ๊ณผ
Processed 1
Processed 2
Processed 3
Processed 4
Done processing array
์ด์ ๊ฐ ๋น๋๊ธฐ ์์ ์ด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ , 'Done processing array'๋ ๋ชจ๋ ์์ ์ด ์๋ฃ๋ ํ์ ์ถ๋ ฅ์ด ๋๋๊ฑธ ๋ณผ์์๋ค.
๊ฒฐ๋ก
JavaScript์์ forEach
์ async/await
๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ ๋น๋๊ธฐ ํจ์๊ฐ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์๋ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด for...of
๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.for...of
๋ ๊ฐ ๋น๋๊ธฐ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฏ๋ก, ์ํ๋ ์์๋๋ก ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค.
์ด ๋ฐฉ๋ฒ์ ํตํด ๋ ์ง๊ด์ ์ด๊ณ ์ค๋ฅ๊ฐ ์ ์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.