什么是回调地狱
多层回调函数的相互嵌套,就形成了回调地狱
回调地狱的缺点:
- 代码耦合性太强,牵一发而动全身,难以维护
- 大量冗余的代码相互嵌套,代码的可读性变差
Promise 的基本使用
- Promise 是一个构造函数
- 我们可以创建 Promise 的实例 const p = new Promise(function(resolve,reject){})
其中:resolve代码操作成功之后的回调,reject代表操作失败之后的回调 - 每一次 new Promise() 构造函数得到的实例对象都可以通过原型链的方式访问到 .then() 方法和.catch()方法,例如 p.then().catch()
- .then() 方法可以传入预先指定成功的回调函数
- .catch() 方法可以传入预先指定失败的回调函数
.then方法的特性
如果上一个 .then() 方法中返回了一个新的 Promise 实例对象,则可以通过下一个 .then() 继续进行处理。因此, .then() 方法是 Promise 支持链式调用的本质原因
async和await的使用
什么是 async/await
- 在 async/await 出现之前,开发者只能通过链式 .then() 的方式处理 Promise 异步操作
- .then 链式调用的优点:解决了回调地狱的问题
- .then 链式调用的缺点:代码冗余、阅读性差、不易理解
- async/await 是 ES8(ECMAScript 2017)引入的新语法,用来简化 Promise 异步操作
async/await 的基本使用
- 使用async/await可以获取then回调函数里面的返回数据
- async:代表异步
- await:代表等待,表示需要等待后面的异步方法执行完毕之后再执行后续的代码
let fr = async function () {
try {
let res = await myReadFile('./c.txt')
console.log(res);
} catch (err) {
console.log('出错了');
}
}
网友评论