在 ES8 中使用 async 和 await

阅读时长 4 分钟读完

ES8 引入了 async 和 await,这是一种使用 Promise 来优化异步函数编程的方式。async 关键字用于声明一个函数是异步的,而 await 关键字用于等待 Promise 返回结果。这种方式不仅简化了异步编程的复杂性,还可以在代码中使用更加自然的方式来编写异步函数代码。

async 函数

async 函数是一种返回 Promise 对象的异步函数。在函数前面添加 async 关键字声明即可创建一个 async 函数。

async 函数内部可以使用 await 等待 Promise 的返回结果,同时 async 函数内部也可以有多个 awiat 表达式。

await 表达式

await 表达式只能在 async 函数体内使用。它会等待一个 Promise 实例返回结果,然后将异步操作的结果返回给调用者。

使用 try-catch 可以捕获异步操作的异常。

还需要注意的是,await 表达式会阻塞 async 函数的执行,直到 Promise 对象返回结果。如果 await 表达式后面是一个耗时较长的操作,那么它就可能会阻塞整个应用程序的执行。

错误处理

async 函数的抛出异常会返回一个 rejected 的 Promise 对象。在编写 async 函数时,需要注意错误处理。

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

在上面的例子中,如果没有这个 try-catch 语句,rejected 状态的 Promise 对象就会被返回。因此,在 async 函数中使用 try-catch 可以更好地处理异步操作的异常。

示例代码

接下来看一个完整的使用 async 和 awit 的示例。

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

这个示例中,我们使用了 fetch 来获取用户的信息,如果响应状态不是 200,那么就抛出一个错误。最后使用 await 表达式将异步操作的结果返回给调用者。

总结

async 和 awiat 是 ES8 中重要的新特性,它们可极大地简化异步函数的编程复杂性。通过使用 async 和 await,我们可以更自然的编写异步函数的代码。同时,代码的可读性和可维护性也得到了大幅度提升。需要注意的是,在编写异步函数时需要注意异常处理。

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

纠错
反馈