/ es2015

Generator Functions ES2015

generator는 전통적인 function의 return 방식의 흐름이 아니라 yield 키워드를 이용해서 외부에서 값을 받을때까지 멈춰 있거나 외부에 값을 전달하고 멈추는 흐름을 만들어 낼 수 있다.

function을 정의 할때 *

function *nameList() {
  yield "Flynn"; // { done: false, value: "Flynn" }
  yield "Hanna"; // { done: false, value: "Hanna" }
}

*의 위치는 중요하지는 않음 대신 function 키워드 첫번째로 와야함

function *nameList(){
function* nameList(){
function * nameList(){

generator function을 호출 하면 generator object를 리턴하게 된다.
이를 아래 처럼 사용 할 수 있다.

for...of

for(let name of nameList()) {
  console.log(name); // Flynn
}

spread operator

let names = [...nameList()];
console.log(names);  // ["Flynn", "Hanna"]

destructuring

let [first, second] = nameList();
console.log(first, second); // Flynn Hanna