📜  SyntaxError: await 仅在异步函数中有效 - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:13.669000             🧑  作者: Mango

JavaScript: SyntaxError Await Only Valid in Async Function

在 JavaScript 中,如果你在非异步函数中使用 await 关键字,那么你将会遇到 SyntaxError: await 仅在异步函数中有效 错误。

异步函数

异步函数是指一个使用 async 关键字定义的函数。异步函数会返回一个 Promise 对象,可以通过 await 关键字等待异步操作完成后的结果。

异步函数示例:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}
await 关键字

await 关键字只能在异步函数中使用。它用于等待异步操作返回结果(就像 Promise 中的 then 方法)。await 关键字会暂停异步函数的执行,直到异步操作完成并返回结果。

await 关键字示例:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

async function logData() {
  const data = await fetchData();
  console.log(data);
}

logData();
错误示例

当你在非异步函数中使用 await 关键字时,就会出现 SyntaxError: await 仅在异步函数中有效 错误。

错误示例:

function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

const data = fetchData();
console.log(data);
// SyntaxError: await 仅在异步函数中有效
解决方案

要解决该错误,你需要将使用 await 关键字的代码块放到一个异步函数中。或者,你也可以使用 Promise 和 then 方法来处理异步操作。

解决方案示例:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

fetchData().then(data => console.log(data));