[typescript] await for...of 문을 사용하여 비동기 작업의 결과를 이메일로 보내는 방법

일반적으로 TypeScript에서 Promise 기반의 비동기 작업을 처리할 때 await 키워드를 사용합니다. 하지만 때때로 여러 비동기 작업을 순차적으로 처리하고 결과를 조합하여 작업을 수행해야 할 때가 있습니다. 이러한 상황에서 await for…of문을 사용하여 간결하고 효율적으로 비동기 작업을 처리할 수 있습니다.

for…of 문을 사용하여 비동기 작업 처리하기

우선, 이메일 보내기와 관련된 비동기 작업을 수행하는 함수가 있다고 가정해 봅시다. 이 때 이 함수는 Promise를 반환합니다. 다음은 해당 함수의 예시입니다.

async function sendEmail(email: string, content: string): Promise<void> {
  // 이메일을 보내는 비동기 작업 수행
  // ...
}

이제 await for…of문을 사용하여 여러 이메일을 보내는 작업을 처리하는 예제를 살펴보겠습니다.

const emailsToSend = [
  { email: 'recipient1@example.com', content: '메일 내용 1' },
  { email: 'recipient2@example.com', content: '메일 내용 2' },
  // ...
];

async function sendAllEmails(emails: { email: string; content: string }[]): Promise<void> {
  for (const { email, content } of emails) {
    await sendEmail(email, content);
    console.log(`이메일을 보냈습니다: ${email}`);
  }
}

sendAllEmails(emailsToSend)
  .then(() => {
    console.log('모든 이메일을 성공적으로 보냈습니다.');
  })
  .catch((error) => {
    console.error('이메일 전송 중 오류가 발생했습니다:', error);
  });

결과

await for…of문을 사용하여 여러 비동기 작업을 처리하면 작업이 순차적으로 실행되며, 각각의 작업의 결과를 조합하거나 추가적인 작업을 수행할 수 있습니다.

이 방법을 사용하면 병목 현상을 피하고 메모리 사용량을 줄일 수 있어서 대규모의 작업에서 유용하게 활용할 수 있습니다.

이제 여러분도 await for…of문을 활용하여 TypeScript에서 비동기 작업의 결과를 이메일로 보내는 방법을 익혔습니다.