generator 原理
- 全局变量用class类声明,保证独立状态
- switch case切换状态变更
- for of 可以自动执行next(),遍历生成器直至结束
async await 原理
- await的作用之一是获取后面Promise对象成功状态传递出来的参数
function* g() {
var o = 1;
var a = yield o++;
console.log('a = ' + a);
var b = yield o++;
}
var gen = g();
console.log(gen.next());
console.log('------');
console.log(gen.next(11));
tips: 1. next方法会重置上一次yield返回的值 2. yield o++内部会截止到右边 ,下一次调用next方法前赋值
function* fibonacci() { // 斐波那契数列
let [prev, curr] = [0, 1];
for (;;) { // 这里请思考:为什么这个循环不设定结束条件?
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
for (let n of fibonacci()) {
if (n > 1000) {
break;
}
console.log(n);
}