烂笔头记录一下 JavaScript 中的异步编程。
异步编程的方法有:
- 回调函数
- Promise
- async/await
¶1、回调函数
回调函数在复杂场景下会影响代码的可读性和执行效率。
¶2、Promise
Promise 是 es6 异步编程的一种方案,有三种状态:pending(挂起)、fullfilled(成功)、rejected(拒绝),状态改变后不可逆,通过 then 方法来实现异步调用后的逻辑,支持链式调用。对应的状态变化有两种情况:
- pending -> fullfilled (resolved 解决)
- pending -> rejected (rejected 拒绝)
¶3、async、await
async、await 是 es7 用来实现异步编程的,语法是在 function 关键词前加上async
,代表是异步函数,await
只能在async
函数(异步方法)里使用,因为await
访问本身就会造成程序停止阻塞,await
的阻塞功能,可以把异步方法改成同步。async
可以将任何函数转换为 Promise,await
可以用在任何返回 Promise 的函数之前,并且会暂停在这里,直到 Promise 返回结果才往下进行。
1 | async function getData () { |
async、await 基本做到了用同步代码的风格实现异步逻辑,让代码更简洁。