2016-11-03 3 views
1

배열에서 생성기 함수를 작성하려고합니다. 가장 간단한 예는 다음과 같습니다배열에서 생성자 함수를 생성하십시오.

const array = [1,2,3,4] 

    function * createGenerator() { 
     array.map(function(elem){ 
      yield elem 
     } 
    } 

그리고 내가 기대 : 또한

function * createGenerator() { 
     yield 1 
     yield 2 
     yield 3 
     yield 4 
    } 

이 같은 switch 문을 추가하려면 :

function processServerActions (array) { 
    for (let elem in array) { 
     switch(elem) { 
      case 1: 
       yield 1111 
      case 2: 
       yield 22222 
      case 3: 
       yield 333333 
       yield 444444 
      case 4: 
       yield 55555 
     } 
    } 

} 

을하지만 작동하지 않습니다. 내가 뭘 놓치고 있니?

감사합니다!

+1

몇 가지 구문 오류가 ... – dandavis

답변

3

콜백은 콜백 만 반환 할 수 있습니다. 생성자 함수를 생성하려면 yield이 함수 내부에 있어야하지만 중첩 된 콜백 외부에 있어야합니다.

값을 산출하기 위해 for ... of을 사용하는 것이 좋습니다.

function* createGenerator() { 
 
    for (let elem of array){ 
 
     yield elem; 
 
    } 
 
} 
 

 
const array = [1,2,3,4], 
 
     c = createGenerator(); 
 

 
console.log([...c]);

당신은 of 대신 infor (let elem of array)이 필요합니다.

function* createGenerator() { 
 
    for (let elem of array) { 
 
     switch(elem) { 
 
      case 1: 
 
       yield 1111; 
 
       break; 
 
      case 2: 
 
       yield 22222; 
 
       break; 
 
      case 3: 
 
       yield 333333; 
 
       yield 444444; 
 
       break; 
 
      case 4: 
 
       yield 55555; 
 
     } 
 
    } 
 
} 
 

 
const array = [1,2,3,4], 
 
     c = createGenerator(); 
 

 
console.log([...c]);

+0

큰 튀어, 나는 switch 문을 추가 할 것인지, 내가 배열에서 얻고 수에 따라 몇 가지 다른 일을 산출하기 위해? (나는 이것에 대한 더 자세한 내용을 보여주기 위해 질문을 편집했다) – Nicolas

+0

위대한, 고마워! – Nicolas

관련 문제