await function()
可能不等待函数完成的原因通常是因为 await
关键字被用在了非异步函数(async function)内部,或者是因为被调用的函数本身并不是返回 Promise 对象的异步函数。
async
关键字,这样的函数会返回一个 Promise 对象。当函数内部的 await
表达式等待的 Promise 完成时,异步函数才会继续执行。async
函数内部使用,用于等待一个 Promise 完成(或拒绝),并返回该 Promise 的结果。使用 await
和 async
可以让我们以同步的方式编写异步代码,这使得代码更加直观和易于理解。
async
关键字声明的函数。当需要处理网络请求、文件读写等可能会阻塞主线程的异步操作时,使用 await
和 async
可以使代码更加清晰。
await
:如果一个函数没有被声明为 async
,那么在其中使用 await
会导致语法错误。async
函数中使用了 await
,如果被调用的函数不是返回 Promise 对象的异步函数,await
也会立即返回该函数的执行结果,而不是等待。确保 await
关键字只在 async
函数内部使用,并且被 await
的表达式必须是一个返回 Promise 的异步函数。
错误的用法:
function fetchData() {
let result = await fetch('https://api.example.com/data'); // SyntaxError: await is only valid in async functions and the top level bodies of modules
return result.json();
}
正确的用法:
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data'); // 正确使用 await 在 async 函数中
let result = await response.json();
return result;
} catch (error) {
console.error('Error fetching data:', error);
throw error;
}
}
确保在编写代码时遵循这些原则,可以避免 await
不等待函数完成的问题。
领取专属 10元无门槛券
手把手带您无忧上云