阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS async function 表达式

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

      语法

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

      参数

      name

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

      paramN

      传入函数的形参名称。

      statements

      组成函数体的语句。

      描述

      异步函数表达式与 异步函数语句 非常相似,语法也基本相同。

      它们之间的主要区别在于异步函数表达式可以省略函数名称来创建一个匿名函数。

      另外,异步函数表达式还可以用在 IIFE (立即执行函数表达式,Immediately Invoked Function Expression) 中,更多信息见 函数。

      示例

      一个简单例子

      function resolveAfter2Seconds(x) {
        return new Promise(resolve => {
          setTimeout(() => {
            resolve(x);
          }, 2000);
        });
      };
      
      // async function expression assigned to a variable
      var add1 = async function(x) {
        var a = await resolveAfter2Seconds(20);
        var b = await resolveAfter2Seconds(30);
        return x + a + b;
      }
      
      add1(10).then(v => {
        console.log(v);  // 4 秒后打印 60
      });
      
      (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);  // 2 秒后打印 60
      });
      

      规范

      SpecificationStatusComment
      ECMAScript Latest Draft (ECMA-262)
      async functionDraftES2017 中的初始定义
      目录
      目录