站内搜索:
首页 >> 前端 >> 内容
es6 async函数实现原理的实例讲解

时间:2018/2/1 14:39:10

async函数的实现原理

async函数的实现原理,就是将 Generator函数和自动执行器,包装在一个函数里。

async function fn(args) {

  // ...

}

// 等同于

function fn(args) {

  return spawn(function* () {

    // ...

  });

}

所有的ES6

async函数都可以写成上面的第二种形式,其中的spawn函数就是自动执行器。

下面给出spawn函数的实现,基本就是前文自动执行器的翻版。

function spawn(genF) {

  return new Promise(function(resolve, reject) {

    const gen = genF();

    function step(nextF) {

      let next;

      try {

        next = nextF();

      } catch(e) {

        return reject(e);

      }

      if(next.done) {

        return resolve(next.value);

      }

      Promise.resolve(next.value).then(function(v) {

        step(function() { return gen.next(v); });

      }, function(e) {

        step(function() { return gen.throw(e); });

      });

    }

    step(function() { return gen.next(undefined); });

  });

}

  • 上一篇:安装Sass和Compass的实例教程
  • 下一篇:日常预发线上环境区分与CDN与Diamond关系讲解
  • 返回顶部