Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步函数示例()或异步示例()?_Javascript_Async Await_Ecmascript 2017 - Fatal编程技术网

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

Javascript 异步函数示例()或异步示例()?,javascript,async-await,ecmascript-2017,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 () { ret

为什么写这篇文章是错误的:

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

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

这些是等效的:

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


谢谢你。我可以做
baz:async baz(){return await something();},
?@teelou:No.您需要
函数
关键字来定义函数(对象方法语法和箭头函数除外)。所以你可以做
baz:async function(){…}
或者
baz:async()=>{…}
或者
baz:async function baz(){…}
@FelixKling谢谢<代码>对象方法语法和箭头函数是例外-很公平。。。
const foo = 123;
const a = {
  foo,
  bar() { return 'bar'; },
  async baz() { return await something(); },
};