ํธ์ง : ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค (๋๋ฌด ๋นจ๋ฆฌ ๋งํ์ต๋๋ค!) ... (์๋๋ฅผ๋ณด์ญ์์ค)
.forEachOf ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ๋ฐ๋ณต ํ ํ ์ฝ๋ฐฑ์ ๋์ง๊ณ ์์ต๋๋ค. ์ ์ผํ ๋ฌธ์ ๋ forEachOf์ ๋ํ ์ธ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ ๋ ์ต์ข ์ฝ๋ฐฑ์ด ๋์ ธ์ง์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ค์์ ๋ฌธ์ ์ ์ํ ์ฝ๋์ ๋๋ค.
var async = require('async');
var anArray = [];
var testObj = {
'a': '1',
'b': '2',
'c': '3'
};
async.forEachOf(testObj, function (elem, key, callback) {
console.log(elem);
anArray.push(elem);
}, function (err) {
if (err) {
console.error(err.message);
}
console.log("This line should be printed at the end.", anArray);
});
์ฌ๊ธฐ Runnable์ ์์ต๋๋ค : http://code.runnable.com/VZELB92Qa1Y7JQuq/async-foreachof-node-js-not-working-2-for-callback
์ด์ ์ฌ๊ธฐ์์ ์์ ํ ์๋ชป๋ ์ผ์ ํ ์ ์์ง๋ง์ด ์ง๋ฌธ์ reddit ๋ฐ Stack Overflow์ / r / node์ ๊ฒ์ํ์ผ๋ฉฐ ์ ์ฉํ ๋ต๋ณ์ ์ป์ง ๋ชปํ์ต๋๋ค. ๋ด๊ฐ ์ฌ๊ธฐ์ ๋ญ ์๋ชปํ๊ณ ์๋? ์ด๊ฒ์ ๋๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ ๋ค !!!
ํธ์ง :์ด ์ด๊ธฐ ์์ ์์ 'return callback ()'๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ์ฝ๋์์ ์ค์ ๋ก์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํน์ ์์ ์์์ด 'return callback ()'๋ฌธ์ ๋ง๋๋ ๋ ๋ฒ์งธ ๋น๋๊ธฐ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋ ๋ฒ์งธ ๋น๋๊ธฐ ๋ฉ์๋ ์คํ์ด ์๋ฃ๋๋ฉด ์ฝ๋ฐฑ์ ํธ์ถํ๊ธฐ ์ํด ๋ค๋ฅธ ์ ์ด ํ๋ฆ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฃ์กํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ์ข ๋ฃํ์ญ์์ค !!!
๋ฐ๋ฉด์ 'return callback ()'๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ด์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ฏธ๋ ์ฌ์ฉ์์๊ฒ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ์์ญ์๋ ๋ฌธ์๊ฐ ํ์คํ ๋ถ์กฑํ๊ณ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋ณ ๋ฉ์๋์ ๋ํ ๋ด์ฉ์ด์๋ ๊ทธ๋๋ก๋ ๊ทธ๋ฆฌ ๋ง์ง ์์ผ๋ฏ๋ก ๋์๋ง์ ์ฐพ๋ ๊ฒ์ ์์ฒญ๋๊ฒ ๋๋ฆฌ๊ณ ์ง๋ฃจํ๋ฉฐ ์ด๋ ต์ต๋๋ค!
์๋ง ๋น์ ์ ๋งค ๋ฐ๋ณต ํ์ 'callback ()'์ ํธ์ถํด์ผํฉ๋๋ค.
async.forEachOf(testObj, function (elem, key, callback) {
console.log(elem);
anArray.push(elem);
callback() //<<<<<<<<<
},...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ง ๋น์ ์ ๋งค ๋ฐ๋ณต ํ์ 'callback ()'์ ํธ์ถํด์ผํฉ๋๋ค.