프로그래밍/Node.js

[Node.js 강의 시리즈] 16강 - async/await

월횽 2024. 7. 15. 06:30
728x90
반응형
SMALL

async 함수와 await 키워드를 이해하고, 이를 사용하여 비동기 코드를 간결하고 직관적으로 작성하는 방법을 학습한다.

 

1. async 함수와 await 키워드

async 함수란?

· async 키워드를 함수 앞에 붙여 사용하면 해당 함수는 항상 프로미스를 반환한다.
· async 함수 내에서 비동기 작업을 수행하고, 해당 작업이 완료될 때까지 기다린 후 결과를 반환한다.

728x90

await 키워드란?

· await 키워드는 async 함수 내에서만 사용할 수 있다.
· await 키워드를 사용하면 프로미스가 해결될 때까지 기다렸다가, 프로미스의 결과를 반환한다.
· await는 then 메서드를 사용하지 않고도 프로미스의 결과를 간단하게 다룰 수 있게 해준다.

 

기본 사용법

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

 

 

2. async/await의 비동기 처리 예제

반응형

기본 예제

· async 함수와 await 키워드를 사용하여 데이터를 비동기적으로 가져오는 예제.

async function getData() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
    const data = await response.json();
    console.log('Data:', data);
  } catch (error) {
    console.error('Error:', error);
  } finally {
    console.log('Fetch operation complete');
  }
}

getData();

 

 

Node.js 비동기 함수 사용 예제

· Node.js의 fs 모듈을 사용하여 파일을 비동기적으로 읽는 예제.

const fs = require('fs').promises;

async function readFileContent(filePath) {
  try {
    const data = await fs.readFile(filePath, 'utf8');
    console.log('File content:', data);
  } catch (error) {
    console.error('Error reading file:', error);
  } finally {
    console.log('Read operation complete');
  }
}

readFileContent('example.txt');

 

 

3. async/await의 장점

· 가독성 향상: 코드가 더 읽기 쉽고 직관적이다. then 체이닝 대신 동기 코드처럼 작성할 수 있다.
· 에러 처리 간편화: try와 catch 블록을 사용하여 에러를 쉽게 처리할 수 있다.
· 디버깅 용이: 디버깅이 더 쉽다. 콜백이나 프로미스 체이닝보다 호출 스택이 더 명확하다.

 

비교: 프로미스 체이닝과 async/await

· 프로미스 체이닝 예제

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then((response) => response.json())
  .then((data) => {
    console.log('Data:', data);
  })
  .catch((error) => {
    console.error('Error:', error);
  })
  .finally(() => {
    console.log('Fetch operation complete');
  });

 

SMALL

· async/await 사용 예제

async function fetchData() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
    const data = await response.json();
    console.log('Data:', data);
  } catch (error) {
    console.error('Error:', error);
  } finally {
    console.log('Fetch operation complete');
  }
}

fetchData();

 

 

4. 실습: async/await 사용하기

 

4-1. 기본 async/await 사용

· async 함수와 await 키워드를 사용하여 데이터를 비동기적으로 가져오는 함수를 작성하세요.

 

예제

async function getData() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
    const data = await response.json();
    console.log('Data:', data);
  } catch (error) {
    console.error('Error:', error);
  } finally {
    console.log('Fetch operation complete');
  }
}

getData();

 

 

4-2. Node.js 비동기 함수 사용

· fs 모듈을 사용하여 파일을 비동기적으로 읽고, 내용을 출력하는 함수를 작성하세요.

 

예제

const fs = require('fs').promises;

async function readFileContent(filePath) {
  try {
    const data = await fs.readFile(filePath, 'utf8');
    console.log('File content:', data);
  } catch (error) {
    console.error('Error reading file:', error);
  } finally {
    console.log('Read operation complete');
  }
}

readFileContent('example.txt');

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST