일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- frontend
- DART
- 리액트
- JavaScript
- express
- CLONE
- GRID
- javscript
- pug
- Flutter
- clonecoding
- ES6
- HTML
- react
- TypeScript
- NextJs
- nodejs
- Component
- Mongoose
- Session
- ECMAScript
- graphQL
- CSS
- node.js
- 자바스크립트
- backend
- heroku
- form
- MongoDB
- API
- Today
- Total
Enjoy Programming
[ES6] generator 본문
generator 객체를 살펴보자.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Generator
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function*
먼저 function에 "*"을 붙여주고 선언을 해주면 generator function을 정의하고, 이 함수는 generator객체를 반환한다.
generator function은 generatorFunction 생성자와 function* expression을 ㅅ ㅏ용해 정의 할 수 있다.'
Generator는 빠져나갔다가 나중에 다시 돌아올 수 있는 함수이다. 이때 변수값은 출입 과정에서 저장된 상태로 남아 있는다.
Generator함수는 호출되어도 즉시 실행되지 않고, 대신 함수를 위한 iterator객체가 반환된다. iterator의 next()메서드를 호출하면 Generator함수가 실행되어 yield문을 만날 때 까지 진행하고, 해당 표현식이 명시하는 iterator로 부터의 반환값을 반환한다.
yield*표현식을 마주칠 경우, 다른 generator함수가 위임(delegate)되어 진행된다.
이후 next()메서드가 호출이 되면 진행이 멈췄던 위치에서부터 재실행한다. next()가 반환하는 객체는 yield문이 반환할 값(yielded value)을 나타내는 value속성과 Generator함수 안의 모든 yield문의 실행 여부를 표시하는 boolean타입의 done속성을 갖는다.
next() 를 인자값과 함께 호출할 경우, 진행을 멈췄던 위치의 yield문을 next()메서드에서 받으 ㄴ인자값으로 치환하고 그 위치에서 다시 실행하게 된다.
자 하나 만들어보자 기본적으로 function*이렇게 선언하고 return 대신에 yield문을 써준다.
그리고 값을 반환할때는 next를 써줘야한다. 그럼 next로 진행하기 전의 value를 얻어 온다. 실행 순서가 있다.
ㅏ나 하나 값을 반환하고서 마지막에는 undefined가 뜨고 done:true가 뜬것을 볼 수 있다.
음 뭔가 유용할 것같다. 근데 잘 쓰이진 않는다고 한다.
일단 async await같은 구문이라고 생각하면 될듯 하다. 하나를 해주고 다음을 기다리는?
요기까지~!~! 이런게 있다는것만 알자.
'JavaScript > Vanilla Js' 카테고리의 다른 글
[ES]?? Operator: Nullish coalescing operator (0) | 2021.07.07 |
---|---|
[ES6] Proxy (0) | 2021.07.06 |
[ES6] MAP && Weak Map (0) | 2021.07.06 |
[ES6] Set && weakSet (0) | 2021.07.06 |
[ES6] Symbol (0) | 2021.07.02 |