异步函数示例()或异步示例()?

async function example() or async example()?

为什么这样写是错误的:

'use strict'

async example1 () {
  return 'example 1'
}

async example2 () {
  return 'example 2'
}

export { example1, example2 }

不过这样也行:

export default {
  async example1 () {
    return 'example 1'
  },
  async example2 () {
    return 'example 2'
  }
}

这很混乱。我认为后者也是错误的。

有什么解释吗?

第一个尝试(但失败)声明多个单独的函数,而第二个创建一个包含多个 的对象文字,然后默认导出。顺便说一句,没有 async 关键字也是一样的。你会想要使用

export async function example1() {
  return 'example 1'
}

export async function example2() {
  return 'example 2'
}

此行为与 asyncexport 无关。它是 ES6 增强对象属性的一部分:

这些是等价的:

const foo = 123;
const a = {
  foo: foo,
  bar: function bar() { return 'bar'; },
  baz: async function baz() { return await something(); },
};

const foo = 123;
const a = {
  foo,
  bar() { return 'bar'; },
  async baz() { return await something(); },
};