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

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

await 仅在异步函数中有效 - JavaScript

在 JavaScript 中,await 关键字用于暂停当前 async 函数的执行,等待一个 Promise 对象的解决。但是,需要注意的是,await 只能在异步函数中使用。

异步函数是什么?

异步函数是一个特殊的函数,它能够让我们以异步的方式编写 JavaScript 代码。异步函数用 async 关键字来声明,并且在函数中可以使用 await 关键字。

下面是一个简单的异步函数示例:

async function myAsyncFunction() {
  const result = await fetch('https://api.example.com/data');
  console.log(result);
}

在上面的代码示例中,myAsyncFunction() 是一个异步函数。它使用了 await 关键字来暂停函数的执行,等待 fetch() 方法返回一个 Promise 对象的解决。

为什么 await 只能在异步函数中使用?

JavaScript 中的所有代码都是在单线程环境下运行的。这意味着任何一个 JavaScript 函数都不能阻塞主线程的执行,否则会影响其他代码的执行。

当我们使用 await 关键字时,JavaScript 引擎会通过 Event Loop 机制,暂停当前函数的执行,并执行其他任务。等待 await 后面的 Promise 对象被解决后,再恢复当前函数的执行。

因此,如果我们在非异步函数中使用 await,那么当前函数无法暂停执行,从而会阻塞主线程的执行。

如何处理异步函数中的错误?

当异步函数中出现错误时,可以使用 try...catch 语句来捕获错误。下面是一个示例:

async function myAsyncFunction() {
  try {
    const result = await fetch('https://api.example.com/data');
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}

在上面的代码示例中,如果 fetch() 函数返回一个错误,则会被捕获,并输出到控制台。

总结
  • await 关键字只能在异步函数中使用。
  • 异步函数使用 async 关键字来声明。
  • 异步函数中的错误可以使用 try...catch 语句来捕获。