📅  最后修改于: 2023-12-03 15:35:13.669000             🧑  作者: Mango
在 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 关键字只能在异步函数中使用。它用于等待异步操作返回结果(就像 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));