ECMAScript 2017 (ES8)中的Async函数

阅读时长 4 分钟读完

在ES8中,新增了Async函数这一新特性。Async函数可以按照同步的方式编写异步的代码,使得异步的JavaScript编写更加容易和可读。本文将介绍Async函数的背景和特性,并提供一些使用Async函数的示例。

定义

Async函数是async关键字后跟一个函数声明或函数表达式。 Async函数可以包含await表达式,它将暂停函数执行,等待Promise解决,然后将解决值作为await表达式的值。

当函数调用时,它将返回一个Promise。 Async函数内部必须包含至少一个await表达式。

如上的示例代码展示了一个简单的Async函数的实现,实现了通过异步方式获取API数据,并将数据转换为JSON并将其返回。

特性

Async函数的一个主要特性是执行环境的改变。

当一个函数被async修饰之后,它将变成一个异步函数,并且会返回一个Promise。同时这个函数会在主线程之外,在一个微任务队列中运行,Async函数内部不能有同步API。

如果在Async函数中抛出任何异常,则返回的Promise将被拒绝。

同时,以下的三种情况会自动把异步操作包装成Promise返回。

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

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

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

await

Await表达式暂停Async函数的执行,直到Promise完成并返回结果。

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

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

在Async函数中,可以像同步代码那样使用try/catch来捕获异常。

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

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

嵌套的Async函数

Async函数可以嵌套任意递归深度,这意味着可以在当前Async函数中调用另一个Async函数,而不需要担心回调地狱。

总结

在ES8中,Async函数是一个非常方便的方法来编写异步JavaScript代码。它简化了异步代码的编写方式,同时使代码更加可读和易于维护。以上关于Async函数的介绍,相信对有前端开发经验的人来说都已经看懂了。如果你是一个前端新手,那么希望我能为你提供一些帮助,让你能够尽快掌握这个功能。

参考资料

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647459b4968c7c53b01b9c97

纠错
反馈