ES7: await 必须在 async 函数中使用

ES7:await 必须在 async 函数中使用

近年来,Javascript 语言的发展速度飞快,新的语言特性不断涌现。ES7 中,async/await 是最受欢迎的新特性之一。它们可以让异步操作的代码看起来更加同步化,而不用写一堆回调函数或者 promise 链。在这里,我们会详细讲解:await 必须在 async 函数中使用。

async 函数简介

在讨论 await 之前,我们先来回顾一下 async 函数的使用。

async 函数是一个返回 Promise 对象的异步函数。当函数执行时,它会返回一个被包装为 Promise 对象的值,此时只要有一个 await 表达式失败了,整个函数就会失败,就像 Promise 链“链式调用”中的 then 方法一样。

async 函数的定义格式和普通函数相同,但它们的返回值是 Promise。一个简单的例子如下:

----- -------- ----------- -
  ------ ------ ----- -------
-

----- ------ - ------------

----------------- -- -
  -------------------    -- ------ ----- ------
---

async 函数可以包含多个 await 表达式。在这种情况下,函数将一次性执行所有的同步操作,将异步操作放在事件队列中,并返回一个 Promise 对象。在这个 Promise 对象解决之前,函数将不会继续执行。

使用 await

await 关键字可以在 async 函数内部使用,它可以暂停异步的执行,并等待一个 Promise 对象产生结果。这个关键字只能在 async 函数内使用,这就是为什么 await 必须在 async 函数中使用的原因。

await 和 async 是 ES7 中的异步编程终极解决方案。通过它们,你可以将 JavaScript 代码更接近同步代码的方式来编写,让 JavaScript 非常方便、易读且易于维护。并且,使用它们可以避免古老的 JavaScript 回调或链式 promise 代码。以下是一个示例:

-------- ---------------------- -
  ------ --- --------------- -- -
    ------------- -- -
      --------------------
    -- ------
  ---
-

----- -------- ----------- -
  -----------------------
  ----- ------ - ----- -----------------------
  --------------------
-

------------

执行这个程序时,我们可以看到下面的输出结果:

-------
------ - -------- --------

使用 await,我们将异步代码的时间执行延迟。这等待在异步操作完成之前暂停了函数的执行。在上面的示例中,asyncCall 等待异步操作 resolveAfter2Seconds 的结果,然后打印出被 resolved 状态解决的 Promise 对象的值。

结论

在 ES7 中,await 必须在 async 函数中使用。只要遵循这个规则,你就可以使用 async/await 有效地编写具有嵌套异步操作的代码。这种技术使得代码更具可读性和可操作性,能够节省大量的代码。

async/await 语法的概述在这里结束了。如果你已经对 async/await 有了基本的认识,那么你可以探索更多的异步模式和 JavaScript 特性。希望这篇文章对您有所帮助,我们约等于程序员社区。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67386d61317fbffedf106960