(1)for…of循环可以自动遍历 Generator 函数运行时生成的Iterator对象
function doAutomaticTraversal () {
let arry = []
function* foo () {
yield 1
yield 2
yield 3
yield 4
yield 5
return 6
}
for (let v of foo()) {
arry.push(v)
}
return arry
}
(2)generator 中 手动 调用另一个 generator
function iteratorCallback () {
let arr = []
function* foo () {
yield 'a'
yield 'b'
}
function* bar () {
yield 'x'
// 手动遍历 foo()
for (let i of foo()) {
arr.push(i)
}
yield 'y'
}
for (let v of bar()) {
arr.push(v)
}
return arr
}
(3)generator 中 自动 调用另一个 generator
function iteratorAutoCallback () {
let arr = []
function* foo () {
yield 'a'
yield 'b'
yield 'c'
}
function* bar () {
yield 'x'
yield * foo()
yield 'y'
}
for (let v of bar()) {
arr.push(v)
}
return arr
}