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

Underscore.js는 자바스크립트의 유용한 라이브러리입니다. 이 라이브러리를 사용하면 비동기 함수들을 순차적으로 실행하는 것이 가능합니다.

아래는 Underscore.js를 사용하여 비동기 함수를 순차적으로 실행하는 예시 코드입니다.

// 비동기 함수들을 배열로 정의합니다.
var asyncFunctions = [func1, func2, func3];

// 비동기 함수를 순차적으로 실행하는 함수입니다.
function runAsyncFunctionsInSequence() {
  // 첫 번째 함수를 실행하고, 그 결과를 다음 함수에 전달하는 Promise 체인을 생성합니다.
  return asyncFunctions.reduce(function (promise, func) {
    return promise.then(func);
  }, Promise.resolve());
}

// 비동기 함수 정의 예시
function func1() {
  return new Promise(function (resolve) {
    setTimeout(function () {
      console.log("Function 1 executed.");
      resolve();
    }, 1000);
  });
}

function func2() {
  return new Promise(function (resolve) {
    setTimeout(function () {
      console.log("Function 2 executed.");
      resolve();
    }, 1000);
  });
}

function func3() {
  return new Promise(function (resolve) {
    setTimeout(function () {
      console.log("Function 3 executed.");
      resolve();
    }, 1000);
  });
}

// 비동기 함수를 순차적으로 실행합니다.
runAsyncFunctionsInSequence()
  .then(function () {
    console.log("All functions executed.");
  })
  .catch(function (error) {
    console.error("Error occurred:", error);
  });

위의 예시 코드에서 runAsyncFunctionsInSequence 함수는 asyncFunctions 배열에 정의된 비동기 함수들을 순차적으로 실행합니다. 각 함수는 Promise를 반환하며, then 메서드를 사용하여 순차적으로 실행되도록 체인을 만듭니다.

이렇게 하면 Function 1 executed, Function 2 executed, Function 3 executed와 같이 함수가 순차적으로 실행되는 것을 확인할 수 있습니다. 마지막으로 then 메서드를 사용하여 모든 함수가 실행되었을 때 실행할 코드를 추가할 수 있습니다.