重点在于yeild将生成器函数分成了n+1份,每次生成器函数调用next()方法都会,执行一个yeild块的作用域,假如一个生成器函数中有三个yeild,并且在第二次调用时next()方法中携带了参数那么,这个第二次调用next()携带的参数就会成为第一次yeild的结果

    function getUser(){
    setTimeout(() => {
    let data = ‘用户名称’
    iterator.next(data); //此处是第二次在调用函数,传入的参数会作为第一个yield返回的结果。
    }, 1000);
    }

    1. function getOrder(){<br /> setTimeout(() => {<br /> let data = '订单数据'<br /> iterator.next(data); ** //此处是第三次调用函数**,传入的参数会作为第二个yield返回的结果。<br /> }, 1000);<br /> }
    2. function getGoods(){<br /> setTimeout(() => {<br /> let data = '商品数据'<br /> iterator.next(data); **//此处是第四次调用函数,**传入的参数会作为第三个yield返回的结果。<br /> }, 1000);<br /> }
    3. function * gen (){<br /> let one = yield getUser();<br /> console.log(one);<br /> let two = yield getOrder();<br /> console.log(two);<br /> let three = yield getGoods();<br />** ** console.log(three);<br /> }
    4. let iterator = gen();<br /> iterator.next(); ** // 此处是为第一次调用了这个生成器**