1.概念
异步函数也称为“asynac/await”(语法关键字),是ES6期约模式在ECMAScript函数中的应用。async/await是ES8新增的。这个特性让以同步方式写的代码能够异步执行。
2.async
async关键字用于声明异步函数。这个关键字可以用在函数声明、函数表达式、箭头函数和方法上。
async function foo(){};let bar=async function(){};let baz=async ()=>{};class Qux{async qux(){};}
使用async关键字可以让函数具有异步特征,但总体上其代码任然是同步求值的。如果async关键字声明的函数没有使用return关键字或者await关键字,则依然会按照正常的执行顺序执行,如下面代码:
async function foo(){console.log(1);}foo();console.log(2);//1//2
如果异步函数使用了return关键字返回了值(如果没有return 则会返回undefined),这个值会被promise.resolve()包装成一个期约对象。异步函数始终返回期约对象。在函数外部调用这个函数可以得到它返回的期约:
async function foo() { console.log(1);return 3; //也可以直接返回一个期约对象也是一样 return