ASYNC/AWAIT
async/await
是一个 es7 的语法这个语法是 回调地狱的终极解决方案
语法:
async function fn() { const res = await promise对象 }
async 和 await 关键字
- 注意: 需要配合的必须是 Promise对象
- 注意:Promise 语法的调用方案
- 意义:可以把异步代码写的看起来像同步代码
async 关键字的用法
- 直接书写在函数的前面,表示该函数是一个异步函数
- 意义: 表示在该函数内可以使用 await 关键字
await 关键字的用法
- 必须书写在一个有async关键字的函数内
- await 后面等待的内容必须是一个promise对象
- 本该使用then接收的结果,可以直接定义变量接收
缺点
- await 只能捕获到promise成功的状态
- 如果失败,会报错,终止程序继续执行
解决方案
- 使用 try catch语法
- 语法: try { 执行代码 } catch(err) { 执行代码 }
- 首先执行 try 里面的代码, 如果不报错, catch 的代码不执行了
- 如果报错, 不会爆出错误, 不会终止程序执行, 而是执行 catch 的代码, 把错误信息给到 err 参数
- 改变封装Promise的思路
- 让当前的 Promise 对象百分百成功,让成功和失败都按照 resolve 的形式来执行,只不过传递出去的参数, 记录一个表示成功或者失败的信息