Async Await

339 阅读1分钟

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);
}