async
async 是异步的简写 ,async用于声明一个异步的 function
await
await 可以认为 async wait的简写 await 用于等待一个异步方法执行完成
特点
1. async 的作用 ,它作为一个关键字放到函数前面,这样普通函数就变成了异步函数
2. 异步async 调用 和普通函数的使用方式一样
3. 异步async函数返回一个promise对象
4. async 函数配合 await使用关键字使用(阻塞代码往下执行)是异步方法 是阻塞式的
回调地狱
1. 回调地狱简单来说 就是函数作为参数层层嵌套
2. 在使用javascript时,为了实现某些逻辑经常会写出层层嵌套的回调函数
3. 如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱
async和await的优点
async和await是对promise的优化:async/await是基于promise的,是进一步的一种优化,不过在写代码的时候 promise本身的API出现的很少,很接近同步代码的写法
同步代码和异步代码可以一起编写: 使用promise时最好将同步代码和异步代码放到不同的then节点中,这样结构更加清晰 ,async/await整个书写习惯都是同步的,不需要纠结同步和异步的区别,当然,异步过程需要包装成一个Promise对象放在await关键字后面;
同步代码编写方式: Promise使用then函数进行链式调用,是一种从左到右的横向写法,async/await从上到下顺序执行,就像写同步代码一样,更符合代码编写习惯。