ES6 - 제너레이터란? 제너레이터의 사용법

2022. 9. 6. 21:03·Front-End/JavaScript

제너레이터(Generator)란?

  • 함수의 실행을 중간에 멈추고 재개할 수 있는 기능
  • 실행을 멈췄을때, 값을 전달할 수 있다. 때문에 반복문에서 제너레이터가 전달하는 값을 하나씩 꺼내서 사용가능

제너레이터 함수의 사용방법

  • 제너레이터 함수를 만들때는 function* 키워드를 사용 한다.
  • 제너레이터가 처음 만들어지면 함수의 흐름은 멈춰 있는 상태
  • next() 가 호출되면 다음 yield 가 있는 곳까지 호출하고 다시 함수가 멈춘다.
  • 제너레이터 함수의 호출이 완료되면, done: true 가 같이 리턴된다.

일반적인 방법

  • 순차적으로 값을 전달하는 예시
function* testGenerator() {  //function* 키워드를 사용
  console.log('제너레이터')
  yield 1;
  console.log('사용법을')
  yield 2;
  console.log('공부하는중')
  yield 3;

  return "입니다";
}

const generator = testGenerator();

generator.next();
// 제너레이터
// {value: 1, done: false}
generator.next();
// 사용법을
// {value: 2, done: false}
generator.next();
// 공부하는중
// {value: 3, done: false}
generator.next();
// {value: '입니다', done: true}

크롬의 개발자도구 콘솔에서 사용하는 모습

값을 파라미터로 전달 및 조회

  • next() 메서드를 이용해서 파라미터로 값을 넘겨 줄 수도 있다.
function* sumGenerator() {
    console.log('sumGenerator생성')
    let a = yield ;
    let b = yield ;
    yield a + b;
}
const sum = sumGenerator();

sum.next();
// sumGenerator생성
// {value: undefined, done: false}
sum.next(1);
// {value: undefined, done: false}
sum.next(2);
// {value: 3, done: false}
sum.next();
// {value: undefined done: true}

반응형
'Front-End/JavaScript' 카테고리의 다른 글
  • [JavaScript] 배열 생성, 배열 메서드, for in, for of, forEach
  • [JavaScript] 화살표 함수
  • [JavaScript]구조분해할당(destructuring assignment), 전개연산자, toObject(배열을 객체로 전환)
LightSource
LightSource
어제보단 발전한 오늘의 나를 위한 블로그
    반응형
  • LightSource
    LightSourceCoder
    LightSource
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Git (4)
      • Language (6)
        • Java (6)
      • Back-End (63)
        • Spring Boot (4)
        • MyBatis (1)
        • Oracle (1)
        • PL SQL (3)
        • JPA (26)
        • Spring Data JPA (5)
        • Spring MVC (8)
        • Spring (12)
        • Spring Security (2)
        • Redis (1)
      • Front-End (38)
        • 아이오닉 (2)
        • JSP (7)
        • JavaScript (4)
        • React (16)
        • TypeScript (3)
        • Angular (6)
      • AWS (1)
      • CI & CD (1)
      • 개발지식 (13)
        • 네트워크 (9)
        • CS 지식 (4)
      • 데이터모델링 (2)
      • Tool (1)
      • 프로젝트 (5)
      • 독후감 (2)
      • 잡생각 (0)
      • 면접 준비 (1)
      • 알고리즘 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배요소열추가
    배열요소수정
    react
    리액트
    배열요소삭제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
LightSource
ES6 - 제너레이터란? 제너레이터의 사용법
상단으로

티스토리툴바