์๋ฅผ ๋ค์ด ๋น๋๊ธฐ ํธ์ถ์ด ์๋ ๊ฒฝ์ฐ. async.each
๋ฐ ํด๋น ๋ฐํ์ ๋์ ์ ๋ฌ๋ ๋ฐฐ์ด์ ์์ ์ฌํญ์ด ์์ผ๋ฏ๋ก ์๋ฃ๋์ง ์๊ฑฐ๋ ์ฝ๋ฐฑ์ ๋ ๋ฒ ํธ์ถํฉ๋๋ค.
์์:
async = require "async"
arr = [1, 2, 3]
async.each arr, ((i, cb) -> console.log "i"; setImmediate(cb)), (err) -> console.log "done"
arr.push(4)
์ด ์์ ๋ 3๊ฐ์ ์๋ ๋ฐฐ์ด ์์๋ฅผ ๋ฐ๋ณตํ๊ณ i
์ธ์ํ์ง๋ง async.each
์์ ๋ค์์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฐฑ์ ํธ์ถํ์ง ์์ต๋๋ค.
if (completed >= arr.length) {
callback(null);
}
๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ณผ ๋ ๋ณ๊ฒฝ๋ ์ ์๋ arr.length
๋ํ ๋น๊ต๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ์๋ ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ์ ์ฅํ๊ณ ์ด์ ๋ํ ๋น๊ต๋ฅผ ์ํํ์ฌ ์๋ฃ๋ ์ฝ๋ฐฑ์ด ํธ์ถ๋๋๋ก ํ๋ ๊ฒ์ด ๋ ์ข์ง ์์๊น์? ?
๊นก๊นก์ด:
http://jsfiddle.net/4ysKX/1/
๋น์ ์ด ์ณ์ต๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ์์ ํ์ง ๋ง์ญ์์ค. ๋์ค์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ๋น๋๊ธฐ ํจ์์ ์ ๋ฌํ๊ธฐ ์ ์ ๋ฐฐ์ด์ ๋ณต์ ํฉ๋๋ค.
@aearly ์, ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ๋งค์ฐ ์ฌ์ด ์ค์์ด๊ณ ๋๋ฒ๊ทธํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ด ๋ฌธ์ ์ด๋ฏ๋ก IMHO๋ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋ ๊ฐ์ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ๋๋ฅผ ๋ ๋ฒ ๋ฌผ์์ต๋๋ค.
์
๋ ฅ์ ๋ณต์ ํ์ง ์๊ณ _any_ ๋ฐฐ์ด ์์ ์ ๋ํด ๋ณดํธํ๋ ๊ฒ์ ์ด๋ ค์ธ ๊ฒ์
๋๋ค(์: iterator ํจ์์ ๋๊ธฐ ์์ ). ๊ทธ๋ฌ๋ ๋ฐ๋ณต๊ณผ ๊ด๋ จ์ด ์๋ _asynchronous_ ์์ ์ ๋ํ ๋ณดํธ๋ ๋ณต์ ์์ด๋ ๊ฐ๋จํด์ผ ํฉ๋๋ค. ์ค์ ๋ก arr.length
๊ฐ์ ํ์ง ์๋ ๊ฒ์
๋๋ค.
(์ ๋ @bradens ์ ํจ๊ป
ํ ์คํธ๊ฐ ํฌํจ๋ PR์ ํ์ํ์ง๋ง ์ด๋ฅผ ๋ณํฉํ๋ ๊ฒ์ ๊ถ๊ทน์ ์ผ๋ก @caolan์ ๋ฌ๋ ค ์์ต๋๋ค.
์ด ์์
์ ๋จ์ ์ ์ด๋ ์ด ๋ณต์ฌ์ ์ถ๊ฐ ์ค๋ฒํค๋์
๋๋ค. ๋ฐฐ์ด์ด ํฌ๊ฑฐ๋ async.each
๋ฑ์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ ๊ฒฝ์ฐ ์๋๊ฐ ๋๋ ค์ง๊ณ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ ์ด ๋ณต์ฌ๊ฐ ๋๋ฌด ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ฐฐ์ด์ ์ด๊ธฐ ๋ฐ๋ณต์ด ๋๊ธฐ์์ด๋ฏ๋ก ์๋ ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ์ ์ฅํ์ฌ ๋์ค์ ํ์ธํ ์ ์๋ค๊ณ ์ ์ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ทธ ์ฌ์ด์ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์ฝ๋ฐฑ ํธ์ถ ์๊ฐ ๋ฐ๋ณต์ ํธ์ถ ์์ ์ผ์นํ๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ async.each
๋ํด ์ฝ๊ณ ์ค๋ฒํค๋๊ฐ ์์ด์ผ ํ์ง๋ง ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์์ง ์ดํด๋ณด์ง ์์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ชจ๋ ๋ณ๋ ฌ ๊ธฐ๋ฅ์ด ์ผ๊ด๋ ๋์์ ํ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
์ด๊ฒ์ #557์ ๋ณต์ ํ์ ๋๋ค.
async๋ ๊ฒฐ๊ตญ ์ด๋ ์ด ์์ ์ ํ์ฉํ์ง ์์์ต๋๊น? ์ฒ์๋ณด๋ค ๋ ๋ง์ ์์๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํด ์ฌ์ค ์ดํ์ ์๋ ๋ฐฐ์ด์ ์์ ํ๋ ๊ฒ์ด ์ข์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
async๋ ๊ฒฐ๊ตญ ์ด๋ ์ด ์์ ์ ํ์ฉํ์ง ์์์ต๋๊น? ์ฒ์๋ณด๋ค ๋ ๋ง์ ์์๋ฅผ ๋ฐ๋ณตํ๊ธฐ ์ํด ์ฌ์ค ์ดํ์ ์๋ ๋ฐฐ์ด์ ์์ ํ๋ ๊ฒ์ด ์ข์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.