Posts generator 문법
Post
Cancel

generator 문법

Generator 문법

  • 자바스크립트의 기능이며 Redux-saga의 핵심 기능이다.
  • 함수를 특정 구간에 멈춰놓고, 원할때 다시 돌아가게 할 수 있음. 또 반환을 여러번 할수 있다.

예시

1
2
3
4
5
6
7
function* generate() {
  yield 1;
  yield 2;
  yield 3;
  return 4;
}
const generator = generate();
  • 제너레이터 함수를 호출 하면, 제너레이터 객체를 반환한다.
  • 이 객체에 있는 메서드인 .next()를 호출하면 yield 한 값을 반환하고 코드의 흐름을 멈춤.
1
2
3
4
5
generator.next()		-> {value : 1, done :false}
generator.next()		-> {value : 2, done :false}
generator.next()		-> {value : 3, done :false}
generator.next() 		-> {value : 4, done :true}
generator.next()		-> {value : undefined, done :false}
  • 아래와 같이 값을 중간에 받을 수도 있다.
1
2
3
4
5
function* sumGenerator() {
  let a = yield;
  let b = yield;
  yield a + b;
}
1
2
3
4
generator.next()		-> {value : undefined, done :false}
generator.next(1)		-> {value : undefined, done :false}
generator.next(2)		-> {value : undefiend, done :false}
generator.next()		-> {value : 3, done :true}
  • 아래와 같이 next에 넣은 값을 통해 모니터링이 이루어 질수도 있음
1
2
3
4
5
6
7
8
9
10
11
function* watchGenerator() {
  while (true) {
    const action = yield;
    if (action.type === "type1") {
      console.log("type 1");
    }
    if (action.type === "type2") {
      console.log("type 2");
    }
  }
}
1
2
generator.next()					-> {value : undefined, done : false}
generator.next({type:'type1'})		-> "type 1"
This post is licensed under CC BY 4.0 by the author.

Decision Tree를 이용한 서울 미세먼지 예측 모델

redux-saga concepts

Comments powered by Disqus.