sitelink1 | https://youtu.be/PNtsOqW4wnE |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
javascript의 비동기 동작에서 일련의 과정을 트랜잭션으로 묶어서 처리하기 위해 콜백을 연속해서 사용하게 되는데 다음과 같이 설계할 수 있다
function task1(callback) {
console.log('Task1 시작');
setTimeout(function () {
console.log('Task1 끝');
callback();
}, 300);
}
function task2(callback) {
console.log('Task2 시작');
setTimeout(function () {
console.log('Task2 끝');
callback();
}, 200);
}
task1(function () {
task2(function () {});
});
그리고 이러한 콜백이 심화하게 되면 콜백 지옥을 만나게 된다
task1(a, b, function (err, result1) {
task2(c, function (err, result2) {
task3(d, e, f, function (result3) {
task4(h, i, function (result4) {
// 비동기 동작
});
task4
}); // task3
}); // task2
}); // task1
이를 해결하기 위해 Async 와 Promise를 이용한다
Async
비동기 동작의 흐름을 제어하기 위한 외부 모듈
설치
> npm install async
기능
행위 순서 제어
series : 순차 실행
series(tasks, [callback])
async.series(
[
//태스크1
function(callback) {
//태스트 성공
callback(null, result);
//테스트 실패
callback(err, null); //다음 태스크는 실행하지 않는다
},
태스크2,
태스크3
],
function(err, results) {
if ( err ) {
// 태스크 진행 중 에러 : callback(err, null)
return;
}
// 마무리 동작
}
);
seriesEach
parallels
waterfall
콜렉션(배열, 객체)
each
forEachOf
map
filter