ES6新特性之Generator函数

Generator函数

Generator 函数是 ES6 提供的 一种异步编程解决方案,语法行为与传统函数完全不同 。

Generator函数有两个特征: 一是 function命令与函数名 之间有一个星号: 二是 函数体内部使用 yield吾句定义不同的内部状态。

<script>
	function* hello(){
		yield "hello";
		yield "world";
		yield "abc";
		return "qq";
	}

	let h = hello();
	// console.log(h.next());
	// console.log(h.next());
	// console.log(h.next());
	// console.log(h.next());

	for(let v of h){
		console.log(v);
	}

</script>

用法:

<script>
function* hello () {
yield "hello";
yield "world";
return "done";
}
let h = hello();
console.log(h.next()); //{value: "hello", done: false}
console.log(h.next()); //{value: "world", done: false}
console.log(h.next()); //{value: "done", done: true}
console.log(h.next()); //{value: undefined, done: true}
</script>

可以看到,通过hello()返回的h对象,每调用一次next()方法返回一个对象,该对象包含了value值和done状态。直到遇到return关键字或者函数执行完毕,这个时候返回的状态为ture,表示已经执行结束了。

for...of循环 

通过for...of可以循环遍历Generator函数返回的迭代器。
用法:

<script> 
function* hello () { 
yield "hello"; 
yield "world"; 
return "done"; 
} 
let h = hello(); 
console.log(h.next()); //{value: "hello", done: false} 
console.log(h.next()); //{value: "world", done: false} 
console.log(h.next()); //{value: "done", done: true} 
console.log(h.next()); //{value: undefined, done: true} 
</script> 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值