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