상세 컨텐츠

본문 제목

JAVASCRIPT 프로미스 , 제네레이터

개발

by 동동주1123 2023. 4. 9. 18:22

본문

# 참고용

1. 제네레이터

ES6(ES2015) 제네레이터(generator)는 특수한 종류의 함수로, 호출될 때마다 중간 결과를 반환하고 호출이 끝난 후에도 상태를 유지할 수 있습니다. 제네레이터 함수는 function* 키워드를 사용하여 정의하며, yield 키워드를 사용하여 값을 반환합니다. 제네레이터는 반복자(iterator) 프로토콜을 따르기 때문에, for...of 루프와 같은 반복문에서 사용할 수 있습니다.

제네레이터 함수 예시:

function* simpleGenerator() {
  yield 1;
  yield 2;
  yield 3;
}

const generatorInstance = simpleGenerator();

console.log(generatorInstance.next()); // 출력: { value: 1, done: false }
console.log(generatorInstance.next()); // 출력: { value: 2, done: false }
console.log(generatorInstance.next()); // 출력: { value: 3, done: false }
console.log(generatorInstance.next()); // 출력: { value: undefined, done: true }

제네레이터를 사용한 피보나치 수열 생성 예시:

function* fibonacci() {
  let [prev, curr] = [0, 1];
  while (true) {
    [prev, curr] = [curr, prev + curr];
    yield curr;
  }
}

const fibonacciGenerator = fibonacci();
for (let i = 0; i < 10; i++) {
  console.log(fibonacciGenerator.next().value);
}

제네레이터는 비동기 프로그래밍에서 유용하게 사용될 수 있습니다. 예를 들어, async/await가 도입되기 전에는 비동기 작업을 처리하기 위해 제네레이터와 프로미스(Promise)를 함께 사용하기도 했습니다.

제네레이터를 사용하면 코드의 실행 흐름을 더 잘 제어할 수 있으며, 이를 통해 무한한 데이터 스트림, 특정 조건에서만 실행되는 코드 블록 등 다양한 상황에서 효과적으로 사용할 수 있습니다.

2. 프로미스

ES6(ES2015)에서 도입된 프로미스(Promise)는 비동기 작업의 최종 결과를 나타내는 객체입니다. 프로미스는 비동기 작업이 완료된 후 결과를 처리하는 데 사용되며, 작업이 성공적으로 완료되었는지 실패했는지 여부를 쉽게 확인할 수 있습니다. 프로미스를 사용하면 콜백 지옥(callback hell)을 피하고, 비동기 코드를 더 깔끔하게 작성할 수 있습니다.

프로미스는 주로 다음 세 가지 상태를 가집니다.

  1. 대기(pending): 초기 상태로, 프로미스가 이행(fulfilled)되거나 거부(rejected)되지 않은 상태입니다.
  2. 이행(fulfilled): 작업이 성공적으로 완료된 상태입니다.
  3. 거부(rejected): 작업이 실패한 상태입니다.

 

const myPromise = new Promise((resolve, reject) => {
  // 비동기 작업을 수행합니다.
});

 

'개발' 카테고리의 다른 글

Mysql 힌트 종류  (0) 2023.04.15
JAVA XML 파싱방법 XmlPull 이용  (0) 2023.04.09
JAVA XML 파싱하는 방법  (0) 2023.04.09

관련글 더보기