[javascript] Bluebird를 사용하여 비동기 함수를 순차적으로 실행하는 방법을 알려주세요.

비동기로 동작하는 함수를 순차적으로 실행하려면 Bluebird의 Promise.each 메서드를 사용할 수 있습니다. Promise.each 메서드는 제공된 배열의 각 항목에 대해 비동기 함수를 실행하고, 모든 항목의 처리가 완료될 때까지 기다린 후에 결과를 반환합니다.

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

const Promise = require('bluebird');

// 비동기 함수 예시
function asyncFunction(item) {
  return new Promise((resolve, reject) => {
    // 비동기 작업 수행
    // 예: setTimeout을 사용한 비동기적 작업
    setTimeout(() => {
      console.log(`Item processed: ${item}`);
      resolve();
    }, 1000);
  });
}

// 실행할 항목들의 배열
const itemsToProcess = [1, 2, 3, 4, 5];

// 배열의 각 항목에 대해 비동기 함수를 순차적으로 실행
Promise.each(itemsToProcess, (item) => {
  return asyncFunction(item);
})
.then(() => {
  console.log('모든 항목 처리 완료');
})
.catch((error) => {
  console.error('에러 발생:', error);
});

위 코드에서는 Promise.each 메서드를 사용하여 itemsToProcess 배열의 각 항목에 대해 asyncFunction을 순차적으로 실행하고 있습니다. 이를 통해 비동기 함수들을 순차적으로 실행하고, 모든 항목의 처리가 완료된 후에 “모든 항목 처리 완료” 메시지를 출력하도록 되어 있습니다.

이처럼 Bluebird의 Promise.each를 활용하면 간단하게 비동기 함수를 순차적으로 실행할 수 있습니다.

참고 자료: Bluebird 공식 문서