标签:ges head 存在 基础 upload tps 异步任务 line 协程
看了几个小时generator相关文章,发现里面东西太多,这周想放弃写这篇,转写其他方面的,上次就用了这招,不过没有没有找到其他可写的,最后决定写一篇相当基础的generator
generator用 function*,比普通函数多出一个“ * ”,generator除了return语句外,可以用yield返回多次,也可以看成generator遇到yield是就返回一个值,并且generator暂停在这,当需要继续执行是只用调用generator.next()就可以继续执行,遇到yield又会暂停,再调用generator.next()后继续执行……
function* gen(){
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
return "结束";
}
let g = gen();
let i = 0;
let st = setInterval(() => {//每间隔500ms执行一次g.next(),执行7次,并在控制台打印
i++;
console.log(g.next());
if(i>7){
clearInterval(st);
}
}, 500);
结果:
可以看出generator 遇到yleld就会暂停,只有当调用generator.next()才会向下执行,调用这个方法会返回{value: x, done: true/false},这个对象中value是yield的返回值,done表示generator是否执行结束,只有当执行到return时,这个对象中的done才会变成true,说明执行结束;如果仍然执行的话,如上图后两条,执行到done为true时就不要执行了
<完>
20180816
发挥不广泛
标签:ges head 存在 基础 upload tps 异步任务 line 协程
原文地址:https://www.cnblogs.com/fahuibuguangfan/p/9508951.html