Javascript 为什么ESLint在将异步函数定义为现有对象的方法时抛出解析错误,以及如何防止它?

Javascript 为什么ESLint在将异步函数定义为现有对象的方法时抛出解析错误,以及如何防止它?,javascript,async-await,eslint,ecmascript-2017,Javascript,Async Await,Eslint,Ecmascript 2017,假设我们有一个普通物体 const foo = {} 通过使用Promise构造函数语法,我们将通过以下方式向其添加async方法: foo.myAsyncMethod = function () { return new Promise((resolve, reject) => { ... }) } 但我们不能这样做(根据ESlint): 在对象已经声明之后,向对象添加新的异步函数作为方法属性的方便方法是什么?问题中的语法似乎是合法的: const obj = {}

假设我们有一个普通物体

const foo = {}
通过使用Promise构造函数语法,我们将通过以下方式向其添加async方法:

foo.myAsyncMethod = function () {
  return new Promise((resolve, reject) => {
    ...
  })
}
但我们不能这样做(根据ESlint):


在对象已经声明之后,向对象添加新的异步函数作为方法属性的方便方法是什么?

问题中的语法似乎是合法的:

const obj = {}

obj.foo = function () {
  return new Promise((resolve, reject) => {
    resolve(1)
  })
}

obj.bar = async function () {
  return await Promise.resolve(2)
}

obj.foo().then(context => console.log(context))

obj.bar().then(context => console.log(context))
产生:

1
2
因为ESLint给了我一个错误,我被它迷住了:

此外,要修复ESLint中的解析错误,请将其添加到
babelrc
文件中:

"parserOptions": {
  "ecmaVersion": 2017
}

您无法访问正在创建的原始对象?@dewwald否,这只是ESLint解析错误,请参阅下面的答案了解更多信息。我知道。这就是我问的原因。我在忙着写答案。因此,如果您可以访问对象创建,这将使它变得明显。请参阅下面的潜在解决方案。在我这边也有工作!
"parserOptions": {
  "ecmaVersion": 2017
}