[코드 정리] 8주차 async

Soozynn·2021년 9월 8일
0

병렬과 직렬 (parallel, waterfull)

async란 비동기 자바스크립트 작업을 위한 간단하고 강력한 기능을 제공하는 유틸리티 모듈, javascript 의 비동기 로직을 좀 더 손쉽게 작성할 수 있게 해주는 library이다.


병렬 실행

async.parallel(tasks, callback)

  • [ tasks ]:
    실행할 함수 모음입니다.
    배열, 객체 또는 이터러블이 될 수 있습니다.
  • [ Callback ]:
    모든 작업 결과가 전달되고 모든 작업 실행이 완료되면 실행되는 콜백입니다.

async.parallel() -> 병렬 실행

이전 작업이 완료될 때까지 기다리지 않고 서로 독립적으로 여러 작업을 실행합니다.

즉 자바스크립트에서의 기본 작동 방식처럼 한 코드가 실행이되면 그 다음 코드가 실행되는 것이 아닌 같은 선상에서 독립적으로 동시 다발 출발하는 것과 같은 맥락인 것 같다.

가장 많이 사용하는 병렬 처리 메소드 로, 배열 (tasks) 에 처리하고 싶은 비동기 작업들을 callback 을 인자로 받는 함수 형태로 선언합니다.

그리고 모든 tasks 가 수행이 끝난 다음에서야, 맨 마지막에 정의된 callback 함수가 실행됩니다.

동시 실행이기 때문에 각 task 들은 독립적으로 실행되며, results에는 모든 함수의 결과가 저장된다.

  async.parallel([task1, task2, task3], function(err, results) {
  	// code.. parallel 완료 콜백
  });

👉 비동기 작업을 동시에 수행 한 후, 모든 작업(tasks)이 종료 된 후에 완료 함수 (callback) 를 수행하여 준다
만약 tasks 수행 도중에 에러가 발생하면, task 수행을 멈추고 callback 함수를 바로 호출하는데, 이때 인자에 에러 내용을 채워서 넘깁니다. 맨 마지막 callback 함수는 null이면 정상적으로 모든 tasks 들이 성공적으로 호출된 것으로 처리하고, 만약에 null이 아닌 경우, tasks 수행 도중에 에러가 난것으로 파악하여 에러 처리를 한다.

함수 중 하나가 콜백에 오류를 전달하면 (콜백 첫 번째 매개변수가 null이 아님) 기본 콜백이 즉시 오류 값으로 호출됩니다. 그래도 모든 기능이 실행됩니다.

함수의 콜백에 오류가 전달되면 오류와 함께 기본 콜백이 즉시 호출됩니다. 병렬은 I/O 작업을 병렬로 시작하는 것이지만 Javascript가 단일 스레드이기 때문에 병렬 실행이 아닙니다.

출처: https://bcho.tistory.com/1083 [조대협의 블로그]

직렬 실행

waterfall

이번에 알아볼 메소드는 waterfall입니다. 이름에서 이미 짐작하셨겠지만 정의된 작업들의 결과가 다음 작업으로 전달되면서 순차적으로 처리되는 방식입니다.

아래의 예시는 순차적으로 add10을 실행하여 10을 누적하여 더하는 코드입니다.

0개의 댓글