您现在的位置:首页 >> 前端 >> 内容

es6 async函数实现原理的实例讲解

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

  核心提示:async函数的实现原理async函数的实现原理,就是将 Generator函数和自动执行器,包装在一个函数里。async function fn(args) { // ...}// 等同于funct...

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

  });

}

Tags:ES S6 6A AS 
作者:网络 来源:Web先生的博客