|
1 // With yield*, inner and outer iterators can be invoked separately. |
|
2 |
|
3 function* g(n) { for (var i=0; i<n; i++) yield i; } |
|
4 function* delegate(iter) { return yield* iter; } |
|
5 |
|
6 var inner = g(20); |
|
7 var outer1 = delegate(inner); |
|
8 var outer2 = delegate(inner); |
|
9 |
|
10 assertIteratorNext(outer1, 0); |
|
11 assertIteratorNext(outer2, 1); |
|
12 assertIteratorNext(inner, 2); |
|
13 assertIteratorNext(outer1, 3); |
|
14 assertIteratorNext(outer2, 4); |
|
15 assertIteratorNext(inner, 5); |
|
16 |
|
17 if (typeof reportCompare == "function") |
|
18 reportCompare(true, true); |