Fork me on GitHub

在Node中使用ES7新特征——async、await

async与await两个关键字是在ES7中添加的新特征,旨在更加直观的书写异步函数,避免出现callback hell。

 

callback hell是什么?

readFileContents("a.txt", function (a){
     readFileContents("b.txt", function (b){
           writeFileContents("ab.txt", a + b, function(){
               console.log("we are done");
           });
     });
}); 

  

上方代码即为callback hell,简单的逻辑当我们用异步编程方式书写出来时,会变得非常难以理解以及维护。现在看上去或许情况不是那么的糟糕,但是当异步数量相当大的时候,维护代码简直会是一场灾难。

 

为了防止这种情况的出现,ES7新增了async、await关键字。那么他们的作用是什么呢?

 

简而言之:

  • async关键字用于函数声明之前,表示该函数为async函数,await只能在async函数内部使用,否则会报错
  • await关键字用在调用函数之前,表示调用的函数是一个异步函数,该函数一般会返回一个Promise对象,await在等待返回数据之后再往下执行。如果等待的函数返回的不是一个Promise对象,那么await关键字会失效。
posted @ 2018-02-14 14:02  钟衷7  阅读(195)  评论(0编辑  收藏  举报