前言
async/await 是 ES8 中新增的一种异步编程语法,可以简化 Promise 的使用。本文将详细介绍 async/await 的基本用法、错误处理、串行执行和并行执行,并提供示例代码。
基本用法
async/await 的基本用法是将异步操作写在一个 async 函数中,然后使用 await 来等待 Promise 对象的状态变化。
-- -------------------- ---- ------- ----- -------- ----------- - ----- ------- - ----- ------------ ----- ----- - ----- --------------- ----- ------- - ----- ------------ ----- ----- - ----- --------------- ------ - ------ ----- -- - ------------------- ------ ----- -- -- - ------------------- ------------------- ---展开代码
上面的代码中,fetchData 函数中的 await 等待 fetch 方法返回的 Promise 对象的状态变化,一旦变为 resolved,就会将结果赋值给 result 变量,并执行下一行代码。最后,fetchData 函数返回包含 data1 和 data2 的对象,并由 then 方法处理。
错误处理
async/await 的错误处理非常直观,只需使用 try/catch 结构捕捉异常即可。
-- -------------------- ---- ------- ----- -------- ----------- - --- - ----- ------ - ----- ----------- ----- ---- - ----- -------------- ------ ----- - ----- ------- - --------------------- - - ------------展开代码
上面的代码中,如果 fetch 或者 json 方法发生错误,就会进入 catch 块中进行错误处理。
串行执行
在有些情况下,我们需要按照一定的顺序执行异步操作,这时可以使用 async/await 来保证顺序执行。
-- -------------------- ---- ------- ----- ----- - ---- -- --- ----------------- -- ------------------- ----- ----- -------- ----------- - ----- ------- - ----- ------------ ----- ----- - ----- --------------- ----- ------------ -- ---- - -- ----- ------- - ----- ------------ ----- ----- - ----- --------------- ------ - ------ ----- -- - ------------------- ------ ----- -- -- - ------------------- ------------------- ---展开代码
上面的代码中,fetchData 函数中的 delay 函数暂停执行了 5 秒钟,保证了请求 1 和请求 2 的执行顺序。
并行执行
如果我们需要同时执行多个异步操作,可以使用 Promise.all 方法来将多个 Promise 对象包装成一个新的 Promise 对象,达到并行执行的目的。
-- -------------------- ---- ------- ----- -------- ----------- - ----- --------- -------- - ----- ------------------------- -------------- ----- ------- ------ - ----- ---------------------------- ----------------- ------ - ------ ----- -- - ------------------- ------ ----- -- -- - ------------------- ------------------- ---展开代码
上面的代码中,Promise.all 方法会在所有 Promise 对象都变为 resolved 或者其中有一个变为 rejected 时,执行 then 或者 catch 方法。
结语
本文介绍了 ES8 中新增的 async/await 特性的基本用法、错误处理、串行执行和并行执行,希望能够对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c451ed6e1fc40e36d36fd1