TIL(22.05.10)

김부건·2022년 5월 10일
0
post-thumbnail

generator

MDN에 쓰여있는 기본 사용 형태

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

var g = gen(); // "Generator { }"

generator 함수는 *을 붙여서 일반함수와 구분을 주는데, arrow function 형태로는 사용이 불가능하다. 주로 사용하는 메소드로는 Generator.prototype.next()가 있는데 yield된 값을 반환해준다.

제너레이터 함수는 함수의 실행을 yield된 지점에서 멈추고, 다시 재개할 수 있다. yield된 시점에서 값을 반환({ value: value, done: true|false }하고, 이를 이용해서 원하는 값을 하나씩 꺼내 사용할 수 있는 장점이 있다. 배열과 달리 값을 미리 만들어놓지 않으므로, 불필요한 메모리를 세이브할 수 있는 장점이 있다. 따라서 필요한 순간에 값을 계산해서 전달하기 때문에 메모리 측면에서 효율적이라고 한다. 함수내에서는 yield 키워드만 사용할 수 있는 것이 아니고 return 키워드를 통해서 일반 함수와 같이 제너레이터함수의 종료도 명시가 가능하다.

function* testGenerator() {
  console.log('첫번째');
  yield 1;
  console.log('두번째');
  yield 2;
  console.log('세번째');
  console.log('네번째');
  yield 3;
  console.log('다섯번째');
  return 'finished';
}

const tGen = testGenerator(); // 제너레이터 객체 생성
console.log(tGen.next()); 
// 첫번째
// {value: 1, done: false}
console.log(tGen.next()); 
// 두번째
// { value: 2, done: false }
console.log(tGen.next());
// 세번째
// 네번째
// {value: 3, done: false}
console.log(tGen.next());
// 다섯번째
// {value: 'finished', done: false}

회고

  • githubID: begin0dev 이 분 코드 스타일 참고하자("이 코드 어떻게 합칠지 생각해보시면 재밌을거에요." ??)
  • 쓰로틀링, 디바운싱의 간격은 300ms가 적당한데, 가능하면 서버 파트랑 얘기해보는 것도 좋다.(터지면 서버에서 노발대발하니까)
  • type으로 any쓸꺼면 Typescript 왜 쓰냐고!!!
  • js 커링을 공부해보자.
  • 클라이언트랑 서버는 서로 믿으면 안된다.
  • 깃에 올리는 파일중에 공개되지 않았으면 하는 값들은, .env에 환경변수로 설정해서 사용하자
    js: process.env.REACT_APP_변수명
    .env: REACT_APP_변수=값
    참고로 REACT_APP_ 는 예약어이므로 꼭 prefix로 변수명 앞에 붙여줘야한다.
  • 리코일을 사용할 때, 가능하면 atom정도에서 끝내고, 백번 양보해서 selector에서는 인간적으로 끝내자.
  • visual 관련된건 css에서 처리해라 ➔ 엄청 긴 코드가 한줄로 변하는 매직이 발생하기도 한다. 고로 html이랑 css 공부도 게을리하면 안된다. FE개발자라면
  • 다국어지원, BabelEDIT: 이건 나만 알꺼임

0개의 댓글