自动执行generator函数
◼ 目前我们的写法有两个问题:第一,我们不能确定到底需要调用几层的Promise关系;第二,如果还有其他需要这样执行的函数,我们应该如何操作呢?
◼ 所以,我们可以封装一个工具函数execGenerator自动执行生成器函数<script>// 封装一个请求方法function requestData(count){return new Promise((resolve,rejdect)=>{setTimeout(()=>{resolve(count)},2000)})}// 3. 生成器的处理方案function* getData(){const res1 =yield requestData("hdc")console.log("res1:",res1)const res2 =yield requestData(res1+",kobe")console.log("res2:",res2)const res3 =yield requestData(res2+",james")console.log("res3:",res3)}// const generator = getData()// generator.next().value.then(res1 =>{// generator.next(res1).value.then(res2 =>{// generator.next(res2).value.then(res3 =>{// generator.next(res3)// })// })// })// 自动化执行生成器函数function execGenFn(fn){// 获取对应函数的生成器const generator = fn()//定义一个递归函数function exec(res){const result = generator.next(res)if(result.done){return}result.value.then(res=>{exec(res)})}// 执行递归函数exec()}execGenFn(getData)</script>