一、说明:迭代器
- 特点:一旦执行,不能停止
- 与普通函数相比,前面多加个*号
- 异步编程
二、用法、
function * xunhuan() {
for (let i = 0; i < 5; i++) {
yield console.log(i)
}
}
const xh = xunhuan()
xh .next()//0
xh .next()//1
xh .next()//2
xh .next()//3
xh .next()//4
xh .next()//undefined
三、作用:
解决回调地狱的问题,能让函数暂停,使代码更有条理、异步、更能维护、操作。
<script>
export default {
name: 'Home',
data () {
return{
iterator:{}
}
},
mounted(){
this.test()
},
methods:{
getUsers(){
setTimeout(()=>{
console.log("111");
let data ='用户信息'
this.iterator.next(data);//第二次调用next,所以调用的实参会作为yield语句第一次调用的返回结果
},2000)
},
getOrders(){
setTimeout(()=>{
console.log("222");
let data ='订单信息'
this.iterator.next(data);
},3000)
},
getGoods(){
setTimeout(()=>{
console.log("333");
let data ='用户信息'
this.iterator.next(data);
},2000)
},
*genTry(){
let users=yield this.getUsers();//第一个yield语句,结果为
console.log('users:',users);
let order=yield this.getOrders();
console.log('order:',order);
let goods=yield this.getGoods();
console.log('goods:',goods);
},
test(){
this.iterator= this.genTry();
console.log( this.iterator)
this.iterator.next()
}
}
}
</script>