ES9 中的 await 和 async —— 为异步编程助一臂之力

阅读时长 4 min read

在 JavaScript 中,异步编程是非常常见的,因为 JavaScript 是一门单线程语言,如果在执行耗时操作时阻塞主线程,会导致页面卡顿,用户体验下降。因此,异步编程成为了 JavaScript 中必不可少的一部分。ES9 中的 await 和 async 就是为了更方便地进行异步编程而生的。

什么是异步编程

在 JavaScript 中,异步编程是指在执行一段代码时,不会阻塞主线程的执行,而是把需要等待的操作交给其他线程或者进程去执行,等待操作完成后再回到主线程继续执行。异步编程常见的场景包括:网络请求、定时器、事件监听等。

什么是 await 和 async

在 ES9 中,新增了 await 和 async 两个关键字,用于更方便地进行异步编程。其中,async 关键字用于定义一个异步函数,函数内部可以使用 await 关键字来等待异步操作的完成。

async 函数的定义和使用

async 函数的定义和普通函数类似,只需要在函数前面加上 async 关键字即可。

在上面的例子中,fetchData 是一个异步函数,内部使用了 await 关键字等待 fetch 和 response.json 方法的执行完成。

使用 async 函数时,可以像调用普通函数一样调用它,但是需要注意的是,调用 async 函数时,它会返回一个 Promise 对象,因为异步操作可能会失败,所以需要使用 Promise 的 then 方法来处理异步操作的结果。

await 关键字的使用

await 关键字只能在 async 函数内部使用,它用于等待一个 Promise 对象的完成,并返回 Promise 对象的结果。

在上面的例子中,await 关键字等待 fetch 方法的执行完成,并返回一个 Promise 对象。当 Promise 对象状态变为 fulfilled 时,await 关键字会把 Promise 对象的结果返回给变量 response。

await 和 async 的优势

使用 await 和 async 可以使异步编程变得更加简单和直观,代码可读性更高。它们还可以解决回调地狱的问题,让代码更易于维护和扩展。

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

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

结语

ES9 中的 await 和 async 让异步编程变得更加简单和直观,它们可以为我们的开发工作带来很多便利。但是,在使用它们时需要注意,异步操作可能会失败,需要使用 Promise 的 then 和 catch 方法来处理异步操作的结果。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67da1a2ca941bf71341d28e5

Feed
back