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
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
11 |
Node.js로 ES6 코드 실행하기 (Babel)
![]() | 황제낙엽 | 2023.01.07 | 66 |
10 |
자바스크립트 CommonJS 모듈 내보내기/불러오기 (require)
![]() | 황제낙엽 | 2023.01.07 | 52 |
9 |
Node.js에서 ES 모듈(import/export) 사용하기
![]() | 황제낙엽 | 2023.01.07 | 50 |
8 | CommonJS 와 ES 의 Module 시스템 | 황제낙엽 | 2023.01.07 | 66 |
7 | [session] 기본 - Express-session 기반 로그인 세션 관리 | 황제낙엽 | 2022.01.03 | 56 |
6 |
[session] 기본 - 2
![]() | 황제낙엽 | 2022.01.03 | 65 |
5 | [session] 기본 - 1 | 황제낙엽 | 2022.01.03 | 62 |
» |
[T아카데미/Node.js 프로그래밍] 프로그램 흐름 제어 (콜백지옥, Async, Promise)
![]() | 황제낙엽 | 2021.01.27 | 77 |
3 | urlencode : request params의 한글 처리 | 황제낙엽 | 2020.12.06 | 191 |
2 | [Deprecated] request / request | 황제낙엽 | 2020.08.26 | 190 |
1 | dotenv (Node.js 기반에서 환경변수 사용하기) | 황제낙엽 | 2020.08.23 | 146 |