📜  仅在异步函数中允许“等待” (1)

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

仅在异步函数中允许“等待”

随着 JavaScript 的发展,异步编程越来越普遍。在异步代码中,我们需要等待某些操作完成以后再执行后续操作。常用的等待方式有回调函数和 Promise。然而,自 ES7 起,我们可以使用更加简洁易读的 async/await 语法。

async/await 语法让异步操作的流程表达更像同步操作,也更容易通过代码来理解异步的执行过程。然而,为了保证程序的正确性,我们需要注意一些限制,其中之一就是只能在异步函数中使用 await 关键字。

为何只能在异步函数中使用 await 关键字?

await 会使异步函数在等待 resolved 后的 Promise 之前暂停执行。这就是我们可以使用它来等待异步操作完成的原因。而异步函数不像普通的函数那样,直接返回一个值,而是返回一个 Promise 对象。异步函数的返回值实际上是一个 resolved 的 Promise 对象,所以我们才能在异步函数中使用 await 等待其它 Promise 对象的返回值。

如何在异步函数中使用 await 关键字?

在异步函数中使用 await 非常简单,在要等待的 Promise 对象前加上 await 关键字即可。下面是一个示例:

async function myAsyncFunction() {
  const result = await myPromiseFunction();
  console.log(result);
}

在上面的代码中,我们定义了一个名为 myAsyncFunction 的异步函数。当它被调用时,它会等待 myPromiseFunction 完成之后,将其返回值 result 打印出来。

需要注意的是,我们不能直接在普通的函数中使用 await 关键字,否则会抛出语法错误。只有在异步函数内部才能使用 await 关键字。

总结

async/await 语法为 JavaScript 中的异步编程带来了便利,使得代码更加易读易理解。然而,在使用时需要注意,await 关键字只能在异步函数中使用,并且仅能用于等待 Promise 对象的返回值。需要在日常使用中多加注意,以保证程序的正确性。