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

 

 

 

 

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
56 Node.js로 ES6 코드 실행하기 (Babel) file 황제낙엽 2023.01.07 3
55 자바스크립트 CommonJS 모듈 내보내기/불러오기 (require) file 황제낙엽 2023.01.07 1
54 Node.js에서 ES 모듈(import/export) 사용하기 file 황제낙엽 2023.01.07 1
53 CommonJS 와 ES 의 Module 시스템 황제낙엽 2023.01.07 1
52 [session] 기본 - Express-session 기반 로그인 세션 관리 황제낙엽 2022.01.03 1
51 [session] 기본 - 2 file 황제낙엽 2022.01.03 0
50 [session] 기본 - 1 황제낙엽 2022.01.03 1
49 [T아카데미] Node.js 프로그램 기초부터 응용까지 강좌 모음 황제낙엽 2021.03.15 29
48 Node.js 에서 Bulk INSERT 를 하는 방법 (multi insert) 황제낙엽 2021.02.02 663
47 mysql, mysql2 모듈 버전 비교 황제낙엽 2021.01.31 269
» [T아카데미/Node.js 프로그래밍] 프로그램 흐름 제어 (콜백지옥, Async, Promise) file 황제낙엽 2021.01.27 17
45 ORM 툴 Sequelize file 황제낙엽 2021.01.27 12
44 [connection과 pool-05] pool 생성이 너무 많은 경우의 database에서의 에러 - Too many connections file 황제낙엽 2021.01.27 50
43 [connection과 pool-04] connection pool 에서의 Transaction을 이용한 commit 과 rollback 황제낙엽 2021.01.27 64
42 [connection과 pool-03] mysql.createPool 과 connection.query 황제낙엽 2021.01.27 383
41 [connection과 pool-02] mysql.createPool 과 pool.query 황제낙엽 2021.01.27 23
40 [connection과 pool-01] mysql.createConnection 과 connection.query 황제낙엽 2021.01.27 39
39 [T아카데미/Node.js 프로그래밍/MySQL] createPool, getConnection 의 간단한 예제 (강의 예제) 황제낙엽 2021.01.27 49
38 여러 개의 데이터 베이스 연결을 동시에 관리하는 PoolCluster 황제낙엽 2021.01.16 2205
37 connetion pooling 과 connection leak 황제낙엽 2021.01.16 35