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()//第三次结果

原文地址:https://www.cnblogs.com/vnwith/p/12587486.html