Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

异步函数(async function)表达式

BaselineWidely available

async function 关键字可用于定义表达式中的异步函数。

你还可以使用异步函数声明

语法

js
async function (param0) {  statements}async function (param0, param1) {  statements}async function (param0, param1, /* … ,*/ paramN) {  statements}async function name(param0) {  statements}async function name(param0, param1) {  statements}async function name(param0, param1, /* … ,*/ paramN) {  statements}

异步函数也可以使用箭头语法进行定义。

参数

name可选

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

paramN可选

传入函数的形参名称。

statements可选

构成函数主体的语句。

描述

async function 表达式与异步函数语句非常相似,语法也基本相同。异步function 表达式和异步function 语句之间的主要区别在于函数名称,它可以在async function 表达式中省略,从而创建一个匿名函数。async function 表达式可以用作IIFE(立即执行函数表达式,Immediately Invoked Function Expression),它在定义后立即运行。参见函数章节以获取更多信息。

示例

简单示例

js
function resolveAfter2Seconds(x) {  return new Promise((resolve) => {    setTimeout(() => {      resolve(x);    }, 2000);  });}// 赋值给变量的异步函数表达式const add = async function (x) {  const a = await resolveAfter2Seconds(20);  const b = await resolveAfter2Seconds(30);  return x + a + b;};add(10).then((v) => {  console.log(v); // 4 秒后打印 60});// 用作 IIFE 的异步函数表达式(async function (x) {  const p1 = resolveAfter2Seconds(20);  const p2 = resolveAfter2Seconds(30);  return x + (await p1) + (await p2);})(10).then((v) => {  console.log(v); // 2 秒后打印 60});

规范

Specification
ECMAScript® 2026 Language Specification
# sec-async-function-definitions

浏览器兼容性

参见

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp