es6 Generator暂停函数方法

ES6 Generator函数

	1、该函数是一个状态机,内部封装不同状态的数据
	2、用来生成并返回一个遍历器对象,必须通过该遍历器对象.next()执行函数
	3、可暂停函数,yield暂停,next启动,返回yield之后的表达式结果
	4、可以让异步任务按同步方式进行,如ajax请求

	特点:
	1、function *函数名(..){..};
	2、内部用yield表达式来定义不同状态
	3、通过返回的遍历器对象来执行函数
	4、执行过程遇到yield,暂停函数,并返回一个包含yield后面的语句或表达式结果的值,和是否结束的布尔值;{value:..,done:..布尔值}
	5、通过遍历器.next()继续执行函数后面的内容
	6、最后一个yield返回后,再后面一个返回的对象value值是return内的值
	7、遍历器对象.next(传入值);传入值可作为上一个yield的返回值,因为.next()调用是在上一个yield处调用

代码示例:

<html ng-app='app' ng-controller='main' >
<head>
	<meta charset="utf-8">
	<meta name='viewport' content='width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0'>

	<script src='jq/jquery-3.4.1.js'></script>

	<style>

	</style>
</head>
<body >


<script>

	function *fun()
	{
		console.log('开始');
		let call=yield 'hello';
		
		console.log(call);
		console.log('过程');
		
		yield 'generator';
		
		console.log('结束');
		return '结束';

	}
	let ite=fun();//返回遍历器对象

	console.log(ite.next());
	console.log(ite.next('返回值'));
	console.log(ite.next());


	
</script>
</body>
</html>
发布了387 篇原创文章 · 获赞 3 · 访问量 9144

猜你喜欢

转载自blog.csdn.net/weixin_43294560/article/details/104184775