generator函数
function *foo(x){
let i = 2 * (yield(x+4))
let o =10 +(yield(i+8))
return x+i+o
}
let generatorTest = foo(6)
第一次执行,x = 6,函数停在yield(x+4),返回结果10
generatorTest.next() //10
第二次执行,传入参数20,i = 40,返回结果48
generatorTest.next(20)
第三次执行,传入参数30 ,6 + 40 + 40 = 86
generatorTest.next(30)
用generator解决回调地狱
function *ajaxGroup(){
yield ajax(url,() => {})
yield ajax1(url1,() => {})
yield ajax2(url2,() => {})
}
let ajaxGroupTest = ajaxGroup()
ajaxGroupTest .next()//第一次结果
ajaxGroupTest .next()//第二次结果
ajaxGroupTest .next()//第三次结果