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 查看本文章