๐ ๐ฝโโ๏ธ FOREACH ๋ด๋ถ์์ AWAIT๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.
6761 ๋จ์ด beginnerswebdevjavascriptprogramming
๋น ๋ฅธ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์ ์ฝ๋๋ฅผ ๊ณ ๋ คํ๊ณ ์ถ๋ ฅ์ ์ถ์ธกํ์ญ์์ค. ๋๋ ๋งค์ด๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ resValue๋ฅผ ๋ฐํํฉ๋๋ค.
const arr = [1 ,2 , 3 , 4]
let resValue = 1
const _1SecPromise = () => new Promise((res, rej) => {
setTimeout(() => { res(resValue++) }, 1000);
})
const justFun = async () => {
console.log('๐ Start')
arr.forEach(async (each) => {
const val = await _1SecPromise()
console.log("๐ each", val)
})
console.log('๐ End')
}
justFun()
๋น์ ์ด ๊ทธ๊ฒ์ ๋งํ๋ค๋ฉด, ๋น์ ์ ์ด๋ฏธ Generators๋ผ๋ ๊ฐ๋ ์ ์๊ณ ์์ ๊ฒ์ ๋๋ค. 2๋ถ ์์ ๋ฐฐ์ฐ์ง ์์ผ๋ฉด.
๋ฐ์ ๊ธฐ์ ๊ฐ๋ .
๋๊ธฐ ๋ฐ ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ์๋ฃจ์ ์ Good'ol for ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
const justFun = async () => {
console.log('๐ Start')
for ( let i = 0 ; i < arr.length ; i ++) {
const val = await _1SecPromise()
console.log('๐ each ', i )
}
console.log('๐ End')
}
์ด๊ฒ์ด ์์๋๋ก ์๋ํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ผ์ธ์.
์ฝ์์ ๋ฐฐ์ด์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ์๊ณ ์ถ๋ค๋ฉด.
๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ํ๋ฅญํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด ๊ฒ์๋ฌผ์์ ๋ ๋ง์ ์ค๋ช ์ ์ํ๊ฑฐ๋ ์ผ๋ถ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์.
์๋ก์ด ๊ฒ์ ๋ฐฐ์ ๋ค๋ฉด ๐ ๋ฅผ ์์ง ๋ง์ธ์!
๐ง๐ฝโ๐ป ์ผ๋ฐ ๋ฐ ์์ฑ๊ธฐ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ์์ ๊ทธ๋ฆผ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ฑ์ ์๊ณ ์ถ์ต๋๋ค. ๋ฐฉ๋ฌธ
๐ธ ๋น์ ์ ์ ์ง ์น ๊ฐ๋ฐ์์ด๋ฉฐ ๋ฐฉ๋ฌธ์์ ๋ฐฐ์ธ ๋ฉ์ง CSS ์น์ฌ์ดํธ๊ฐ ํ์ํ์ญ๋๊น?
๐ช mongoDB ์ฌ์ฉ ? ์ฒดํฌ ์์
์ง์์ ํฅ์์ํค๊ธฐ ์ํด ์ด๋ฌํ ์ ํ์ ์์ ๊ธฐ์ฌ๊ฐ ๋ง์์ ๋ค๋ฉด dev.to๋ฅผ ํ๋ก์ฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ๋ ๋ง์ด ์์ฑํ๊ณ ์คํ ์์ค์ ๊ธฐ์ฌํ๋๋ก ๋๊ธฐ๋ฅผ ๋ถ์ฌํฉ๋๋ค.
ํํ๐ !
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ ๐ฝโโ๏ธ FOREACH ๋ด๋ถ์์ AWAIT๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์.), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/shrihari/dont-use-await-inside-foreach-h86ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค