ECMAScript 2018(ES9)中 async 函数的新特性

阅读时长 4 分钟读完

简介

在ES2017中,async/await已经成为JavaScript编写异步代码的首选方案。ES2018(ES9)中,async函数得到了一些新的特性,这些特性可以帮助我们更加方便地处理异步操作。

新特性

1. Promise.finally()

在ES2017中,我们已经可以使用try/catch来捕获async函数中的异常。但是,如果我们需要在无论成功还是失败的情况下都要执行一些操作,那么就需要使用finally语句。ES2018中,Promise对象也终于支持了finally方法:

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

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

2. 新的错误类型

在ES2018中,引入了两个新的错误类型:AggregateError和AbortSignalError。

AggregateError用于表示多个错误的集合,它的构造函数接受一个数组作为参数,数组中的每个元素都应该是一个Error实例:

AbortSignalError用于表示在AbortController中发生的异常,它继承自DOMException:

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

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

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

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

3. 异步迭代器

在ES2018中,我们可以使用异步迭代器来处理异步操作。异步迭代器是一个返回Promise对象的迭代器,它的next方法和普通迭代器的next方法不同,异步迭代器的next方法返回的是一个Promise对象,该Promise对象的resolve值是一个包含value和done属性的对象,value表示当前迭代的值,done表示是否迭代结束。

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

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

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

指导意义

ES2018中async函数的新特性为我们处理异步操作提供了更多的便利。使用Promise.finally()方法可以让我们更加方便地在异步操作结束后执行一些操作,使用AggregateError和AbortSignalError可以更好地处理异步操作中的异常情况,使用异步迭代器可以更加方便地处理异步数据的迭代。

在实际开发中,我们应该充分利用ES2018中async函数的新特性来提高代码的可读性和可维护性。同时,我们也应该注意异步操作中的异常情况,避免出现不必要的错误。

结论

ES2018中async函数的新特性为我们处理异步操作提供了更多的便利,同时也帮助我们更好地处理异步操作中的异常情况。在实际开发中,我们应该充分利用这些新特性,提高代码的可读性和可维护性。

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

纠错
反馈