ESLint 报错:'await' is only allowed within an async function

阅读时长 3 分钟读完

在开发前端应用过程中,我们可能会用到 ES6 的一些特性,如 async/await。它们可以让代码更加简洁易懂,但在使用时需要注意一些细节,例如在不带 async 关键字的普通函数中不能使用 await。

如果您在使用 ESLint 进行代码检查时遇到了 'await' is only allowed within an async function 报错,那么本文将会给出一些详细的解释和指导。

原因分析

在 JavaScript 中,await 只能在异步函数中使用,否则会出现语法错误。异步函数是使用 async 关键字定义的函数,它可以在内部使用 await 关键字。

例如下面的代码中,testAsync 函数就是一个异步函数,内部使用了 await 关键字:

但如果使用 await 的位置不正确,就会出现语法错误:

这是因为在这个函数中并没有使用 async 关键字来定义它是一个异步函数,而 await 关键字却被使用了。因此,ESLint 报错 'await' is only allowed within an async function,提醒我们要注意语法错误。

解决方案

要解决这个问题,最简单的方式是使用 async 关键字来定义一个异步函数,这样就可以在内部使用 await 关键字了。例如:

如果有类似下面的代码,ESLint 报错 'await' is only allowed within an async function,就可以将这个函数定义为异步函数,再使用 await:

-- -------------------- ---- -------
-------- ----------- -
  ------ -------------------------------------
-

----- -------- ------ -
  --- -------- - ----- -----------
  --- ---- - ----- ---------------
  -----------------
-

如果 fetchData 函数返回 Promise,就可以在 test 函数内部使用 await 来获取它的结果。

总结

使用 ESLint 进行代码检查时,遇到 'await' is only allowed within an async function 报错,是因为 await 只能在异步函数中使用,否则会出现语法错误。为了解决这个问题,可以将函数定义为异步函数,或者在异步函数内部使用 await。这个小问题在实际开发中并不复杂,但需要我们在遇到问题时去了解其原因,以便更好地排查和解决问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64df232af6b2d6eab3a4ec94

纠错
反馈