百度t7 教程 es6学习笔记 04 generator补充使用

function  * show(a1){
			// 这是做菜的初始材料! 很容易理解 打出a1 和b1
			// console.log(a1)
					
			// htmlobj=$.ajax({url:"/Readme.txt",async:false});
			
			// a 还是一个 Promise 对象!!
			let a = $.ajax({url:'1.txt',dataType:'text',async:true})
			let  c = yield a;
			// 打印传递进来的值 
			console.log(c)
			// 执行第二步
			let  data2 =  $.ajax({url:'2.txt',dataType:'text',async:true})
			let  c2 = yield  $.ajax({url:'2.txt',dataType:'text',async:true})

			// 第三步  ,就 随意写了!。。。
			// 也就是说,有多少个 异步就多踹几脚!!
			return 100;
		}	


		oBtn.onclick = function(){
				//1, 得到生成器函数对象
				let a = show('action');

				// 2, 踹一脚
				let result1 = a.next()
				
				result1.value.then((str2)=>{
						console.log(str2)
						//接受异步的结果
						// 在踹一脚!
						let data2 = a.next('hello');
						data2.value.then((st22)=>{
								console.log(st22)
						})	
				})	
		}
}
	

上面是用到了generator 但是使用起来的时候,还 是感觉越写越麻烦? 不知咋地? 我想想看 ?

我终于明白了,缺少个执行的函数runner.js 难怪!

	<script type="text/javascript" src="runner.js"></script>

    function  * show(a1){
		

			let  c = yield $.ajax({url:'1.txt',dataType:'text',async:true});
			console.log("1" + c)
			let  data2 = yield $.ajax({url:'2.txt',dataType:'text',async:true})
			console.log("2" +  data2)	
			return 100;
		}	


		oBtn.onclick = function(){
			runner(show)	
		}

运行结构如下:

也就是说需要执行多个异步操作的时候,就 用runner 去指向异步操作!

async 写法:

var asy  = async function(){
		
			let  c = await $.ajax({url:'1.txt',dataType:'text',async:true});
			console.log("1" + c)
			let  data2 = await $.ajax({url:'2.txt',dataType:'text',async:true})
			console.log("2" +  data2)	
			return 100;
		}	


		oBtn.onclick = function(){
			asy();
		}
}

行 吧,到这基本  就结束了,至于里面细节! 估计是下篇了 , 各位看客 细细折腾折腾 吧!

扫描二维码关注公众号,回复: 3112275 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_15009739/article/details/82558596