在线文档教程

async function

async function

async function 关键字用来在表达式中定义异步函数。当然,你也可以用 异步函数语句 来定义。

您还可以使用异步函数语句来定义异步函数。

语法

async function [name]([param1[, param2[, ..., paramN]]]) { statements }

从ES2015开始,您也可以使用箭头功能。

参数

name此异步函数的名称,可省略。如果省略则这个函数将成为匿名函数。该名称仅可在本函数中使用。

描述

异步函数表达式与 异步函数语句 非常相似,语法也基本相同。它们之间的主要区别在于异步函数表达式可以省略函数名称来创建一个匿名函数。另外,异步函数表达式还可以用在 IIFE (立即执行函数表达式,Immediately Invoked Function Expression) 中,更多信息见 函数

示例

简单示例

function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x }, 2000 } }; var add = async function(x) { // async function expression assigned to a variable var a = await resolveAfter2Seconds(20 var b = await resolveAfter2Seconds(30 return x + a + b; }; add(10).then(v => { console.log(v // prints 60 after 4 seconds. } (async function(x) { // async function expression used as an IIFE var p_a = resolveAfter2Seconds(20 var p_b = resolveAfter2Seconds(30 return x + await p_a + await p_b; })(10).then(v => { console.log(v // prints 60 after 2 seconds. }

规范

SpecificationStatusComment
ECMAScript Latest Draft (ECMA-262)The definition of 'async function' in that specification.Living StandardInitial definition in ES2017.

浏览器兼容性

FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support55?52.0 (52.0)?42?

FeatureAndroidAndroid WebviewEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support???52.0 (52.0)?42?55