자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[NodeJS] 2장 Node.js의 비동기 제어

728x90

지난 시간에는 Node.js에 탄생과 설치방법 개념들을 정리해보았습니다. 이번 시간에는 Node.js의 비동기 제어 흐름은 어떤 방식인지 개념을 살펴보겠습니다. 우선 Node.js에 비동기 제어는 프로그래밍의 핵심적인 개념으로 이벤트 기반의 비동기

I/O 모델을 사용하기 때문에, 비동기 작업을 더욱 효과적으로 처리하는 방법을 이해하는 것이 중요합니다.

 

1. 콜백 함수 (Callback)

콜백 함수는 비동기 중 가장 기본적인 처리 방법으로 함수가 완료된 후 호출되는 함수를 정의합니다.

const fs = require("fs");


fs.readFile("file.txt", "utf8", (err, data) => {
  if (err) {
    console.log(err);
    return;
  }
  console.log(data);
});

2.프로미스(Promise)

콜백 지옥을 피하기 위해 도입된 객체로, 비동기 작업이 완료되면 resolve 또는 reject를 호출합니다.

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

fs.readFile("file.txt", "utf8")
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.error(err);
  });

3.async/await

ES2017(ES8)버전에 도입된 기능으로, 프로미스를 더 간단하게 사용할 수 있습니다. async 키워드로 비동기 함수를 정의하고, await 키워드를 사용해 프로미스가 처리될 때까지 기다립니다.

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

async function readFile() {
  try {
    const data = await fs.readFile("file.txt", "utf8");
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

readFile();

4.Promise.all

여러 개의 프로미스를 동시에 처리할 수 있습니다. 모든 프로미스가 완료될 때까지 기다립니다.

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

async function readFile() {
  try {
    const [file1, file2] = await Promise.all([
      fs.readFile("file.txt", "utf8"),
      fs.readFile("file2.txt", "utf8"),
    ]);
    console.log(file1);
    console.log(file2);
  } catch (err) {
    console.log(err);
  }
}

readFile();

5.비동기 이터레이터 (Async Iterators)

비동기 데이터 스트림을 처리할 수 있는 방법입니다.

async function readLines() {
  const fs = require("fs");
  const readline = require("readline");

  const fileStream = fs.createReadStream("file.txt");
  const rl = readline.createInterface({
    input: fileStream,
    crlfDelay: Infinity,
  });

  for await (const line of rl) {
    console.log(line);
  }
}

readLines();

6.에러 처리

비동기 코드에 에러를 처리하는 것도 중요합니다. try/catch를 이용하거나 .catch() 메서드를 사용해 에러를 처리할 수 있습니다. 

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

async function readFile() {
  try {
    const data = await fs.readFile("file.txt", "utf8");
    console.log(data);
  } catch (err) {
    console.log("Failed read File", err);
  }
}
readFile();

요약

  • Node.js 에서 비동기 제어는 이벤트 기반의 비동기 I/O 모델을 효과적 활용을 위한 중요한 기술
  • 콜백, 프로미스, async/await와 같은 다양한 방법으로 비동기 작업을 관리와 에러 처리 방법 터득
  • 방법들을 잘 활용해서 효율적인 비동기 프로그래밍이 가능하다.
 

GitHub - nodeJsroom/node-js-bloging

Contribute to nodeJsroom/node-js-bloging development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
LIST