async function example()或async example()?

时间:2017-08-21 14:49:43

标签: javascript async-await ecmascript-2017

为什么写这个是错误的:

'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'
  }
}

这令人困惑。我认为后者也是错误的。

对此有何解释?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:4)

此行为与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(); },
};