[javascript] Underscore.js를 사용하여 비동기 함수의 순차 실행을 제어하는 방법은 어떻게 되나요?

Underscore.js는 자바스크립트 유틸리티 라이브러리로, 비동기 함수의 순차 실행을 제어하는 것도 가능합니다. 이를 위해 async.series 메서드를 사용할 수 있습니다.

먼저, Underscore.js와 함께 async.js 라이브러리를 설치해야 합니다. async.js는 비동기 프로그래밍을 간편하게 다룰 수 있도록 도와주는 라이브러리입니다. 다음 명령을 통해 async.js를 설치할 수 있습니다:

npm install async

이제 아래의 예시 코드를 살펴보겠습니다:

const async = require('async');

// 비동기 함수 1
function asyncFunction1(callback) {
  setTimeout(() => {
    console.log('Async Function 1');
    callback(null, 'Result 1');
  }, 2000);
}

// 비동기 함수 2
function asyncFunction2(callback) {
  setTimeout(() => {
    console.log('Async Function 2');
    callback(null, 'Result 2');
  }, 1000);
}

// 비동기 함수 3
function asyncFunction3(callback) {
  setTimeout(() => {
    console.log('Async Function 3');
    callback(null, 'Result 3');
  }, 1500);
}

// 비동기 함수들을 순차적으로 실행
async.series([
  asyncFunction1,
  asyncFunction2,
  asyncFunction3
], (err, results) => {
  if (err) {
    console.error('에러 발생:', err);
  } else {
    console.log('결과:', results);
  }
});

위 코드에서 asyncFunction1, asyncFunction2, asyncFunction3은 각각 비동기 함수를 나타냅니다. 이 함수들은 순차적으로 실행되어야 하며, 실행 결과는 results 배열에 담겨 반환됩니다. async.series 메서드를 사용하여 이러한 비동기 함수들을 순차적으로 제어할 수 있습니다.

위 코드를 실행하면 asyncFunction1, asyncFunction2, asyncFunction3이 순차적으로 실행되는 것을 확인할 수 있습니다. 각 함수의 실행 결과 역시 results 배열에 담겨 출력됩니다.

Underscore.js의 async.series 메서드를 통해 비동기 함수의 순차 실행을 제어할 수 있으며, 이를 통해 보다 직관적이고 효율적인 비동기 프로그래밍을 구현할 수 있습니다.

참고 자료: