async.series ์์ ์ด ์ฌ๋ฌ ์ด์ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ํ์๋ก ํ๋ ์ํฉ์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค. async.waterfall์ ๋ง์ง๋ง ์ด์ ์์ ์ ๊ฒฐ๊ณผ๋ง ์ ๊ณตํ๋ฏ๋ก ์ถฉ๋ถํ์ง ์์ต๋๋ค. async,auto๋ ๋๋ฌด ์ฅํฉํ๊ณ ๋ถํ์ํ ์ข ์์ฑ ์ ์ธ์ ์ถ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ(๋๋ async.series์ ๊ฐ์ ์ฌํญ)์ด ์ ์ฉํ ๊ฒ์ ๋๋ค. ๊ฐ ์์ ์ ๋ชจ๋ ์ด์ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ ๊ฒฐ๊ณผ ๊ฐ์ฒด๋ฅผ ๋ฐ์ต๋๋ค.
๊ฐ๋ฅํ ์ด๋ฆ: ๋์ , ์๋ฆฌ์ฆ ๋์
์์:
async.accumulate({
one: function(callback){
setTimeout(function(){
callback(null, 1);
}, 200);
},
two: function(callback, results){
// results: {one: 1}
setTimeout(function(){
callback(null, 2);
}, 100);
},
three: function(callback, results){
// results: {one: 1, two: 2}
setTimeout(function(){
callback(null, results.one + results.two);
}, 100);
}
},
function(err, results) {
// results is now equal to: {one: 1, two: 2, three: 3}
});
async.auto
์ฒดํฌ์์
์์ ์ธ๊ธํ๋ฏ์ด ๊ฐ๋จํ ์๋ฆฌ์ฆ ์๋๋ฆฌ์ค์์ async.auto๋ ๋๋ฌด ์ฅํฉํฉ๋๋ค. ์ฌ์ฉ์๋ ๊ฐ ๋จ๊ณ๊ฐ ์ด์ ๋จ๊ณ์ ์ข ์๋์ด ์๋ค๊ณ ์ ์ธํด์ผ ํ๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณด๊ธฐ ํํ ๋ฐฐ์ด๊ณผ ์ค๋ณต ๋จ๊ณ ์ด๋ฆ์ด ์์ฑ๋ฉ๋๋ค.
async.auto({
one: function(callback){
setTimeout(function(){
callback(null, 1);
}, 200);
},
two: ["one", function(callback, results){
setTimeout(function(){
callback(null, 2);
}, 100);
}],
three: ["two", function(callback, results){
setTimeout(function(){
callback(null, results.one + results.two);
}, 100);
}
]
},
function(err, results) {
// results is now equal to: {one: 1, two: 2, three: 3}
});
๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ auto์ ๋ํ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ ๋ง๋ค ์์ ์
๋๋ค. ํญ์ ์ฝ๋ฐฑ์ด ๋ง์ง๋ง์ ์๊ณ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์์ ์ข
์์ฑ์ ์ ์ถํ๋ autoInject
(#608)๋ ์ถ๊ฐํฉ๋๋ค.
๊ฐ์ฒด ํค์ ์์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ด ์ ์์ด ๋ง์์ ๋ค์ง ์์ต๋๋ค. ์ด๋ JS ํ๊ฒฝ ์ ์ฒด์์ ๋ณด์ฅ๋์ง ์์ผ๋ฉฐ ์์ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ๋
ธ๋์์๋ง ๋ณด์ฅ๋ฉ๋๋ค. ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ์ง๋ง async.waterfall
์ ๋๋ฌด ์ ์ฌํฉ๋๋ค. ํนํ autoInject
์ถ๊ฐํ๋ ๊ฒฝ์ฐ auto
์ waterfall
์ฌ์ด์ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ํ๋ ๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ:
function seriesAccumulate(tasks, done) {
async.reduce(tasks, [], function (results, task, next) {
task(results, function (err, result) {
results.push(result);
next(err, result);
});
}, done);
}
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์์ ์ผ๋ก ๋ฐ๋ณตํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ซ์ต๋๋ค. ์คํ์ผ์์ series
์ waterfall
์ฌ์ด์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.