위 코드의 실행순서를 정리하면 다음과 같다. 1 foo() 제너레이터를 실행할 이터레이터(it1, it2)를 마련한다. foo() 인스턴스 2개를 마련했다. 2 두 인스턴스에서 next()를 호출한다. yield에서 멈추고 yield 오른편에 있는 지정된 값 2를 각각 넘겨받는다. val1 = 2 , val2 = 2 3 val1 = it1.next(val2* 10).value val210은 210이고 이 값이 next() 호출 시 매개변수로 인스턴스 it1에 전달된다. 따라서 yield자리에 20를 넣어주어 let x = 20이 되고, z++로 z = 2가 된다. 다음 yield인 let y = yield에서 멈추고 yield 오른편에 지정된 값 x*z가 next().value에 담긴다. val1 = 20*2 = 40이 된다. 4 val2 = it2.next(val1*5).value val15은 40