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(let name of nameList()) {
console.log(name); // Flynn
}
let names = [...nameList()];
console.log(names); // ["Flynn", "Hanna"]
let [first, second] = nameList();
console.log(first, second); // Flynn Hanna