es6中 async await 底层实现原理

Posted flowlight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6中 async await 底层实现原理相关的知识,希望对你有一定的参考价值。

Input
async function findPosts() {
  var response = await $.get(‘/posts‘);
  return JSON.parse(response.posts);
}

async function main() {
  console.log(‘starting...‘);
  
  var posts = await findPosts();

  posts.forEach(function (post) {
    console.log(post);
  });
  
  console.log(‘ending...‘);
}

main();

 

Output
function findPosts() {
    var ctx = this, args = arguments;
    return Promise.resolve().then(function () {
        var response;
        return $.get(‘/posts‘).then(function (value) {
            response = value;
            return JSON.parse(response.posts);
        });
    });
}

function main() {
  var ctx = this, args = arguments;
  return Promise.resolve().then(function () {
    console.log(‘starting...‘);
    
    var posts;
    return findPosts().then(function (value) {
      posts = value;
      
      posts.forEach(function (post) {
        console.log(post);
      });
      
      console.log(‘ending...‘);
    });
  });
}

main();

  

 

我很想 知道他是如何  

var posts = await findPosts(); 
后面的代码  也添加到 同一个
 return findPosts().then(  方法中的


参考  https://github.com/jayphelps/sweet-async-await

以上是关于es6中 async await 底层实现原理的主要内容,如果未能解决你的问题,请参考以下文章

yortus/asyncawait,tj/co 这两个 nodejs 库有何区别

JS async和await关键字

ES6 -async ,await

ES6中async和await说明和用法

Kotlin 协程(三) async和await

async 与await 解决异步接口返回数据不能赋值的妙用