async 函数是使用async
关键字声明的函数。 async 函数是AsyncFunction
函数的实例,并且其中允许使用await
链关键字。async
和await
让关键字我们可以用一种更多的方式写出基于Promise
异步地的行为,而独立刻意式调用promise
demo
1 | function resolveAfter2Seconds() { |
语法
1 | async function name([param[, param[, ... param]]]) { |
参数
1 | name |
函数名称。
1 | param |
要传递给函数的参数的名称。
1 | statements |
包含函数主体的表达式。可以使用await
机制。
返回值
一个Promise
,这个promise要么会通过一个由async函数返回的值被解决,要么会通过一个从async函数中抛出的(或其中没有被捕获到的)异常被拒绝。
描述
async函数可能包含0个或者多个await
表达式。await表达式会暂停整个async函数的执行进程并出让其控制权,只有当其等待的基于promise的异步操作被兑现或被拒绝之后才会恢复进程。promise的解决值会被当作该await表达式的返回值。使用async
/ await
关键字就可以在异步代码中使用普通的try
/ catch
代码块。
备注:await
关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误 SyntaxError
。
备注:async
/await
的目的为了简化使用基于promise的API时所需的语法。async
/await
的行为就好像搭配使用了生成器和promise。
async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。