Promise

时间:2021-6-7 作者:qvyue

什么是回调地狱

多层回调函数的相互嵌套,就形成了回调地狱

Promise

回调地狱的缺点:

  • 代码耦合性太强,牵一发而动全身,难以维护
  • 大量冗余的代码相互嵌套,代码的可读性变差

Promise 的基本使用

  1. Promise 是一个构造函数
  2. 我们可以创建 Promise 的实例 const p = new Promise(function(resolve,reject){})
    其中:resolve代码操作成功之后的回调,reject代表操作失败之后的回调
  3. 每一次 new Promise() 构造函数得到的实例对象都可以通过原型链的方式访问到 .then() 方法和.catch()方法,例如 p.then().catch()
    • .then() 方法可以传入预先指定成功的回调函数
    • .catch() 方法可以传入预先指定失败的回调函数

.then方法的特性

如果上一个 .then() 方法中返回了一个新的 Promise 实例对象,则可以通过下一个 .then() 继续进行处理。因此, .then() 方法是 Promise 支持链式调用的本质原因

Promise

async和await的使用

什么是 async/await

  1. 在 async/await 出现之前,开发者只能通过链式 .then() 的方式处理 Promise 异步操作
    • .then 链式调用的优点:解决了回调地狱的问题
    • .then 链式调用的缺点:代码冗余、阅读性差、不易理解
  2. async/await 是 ES8(ECMAScript 2017)引入的新语法,用来简化 Promise 异步操作

async/await 的基本使用

  1. 使用async/await可以获取then回调函数里面的返回数据
  2. async:代表异步
  3. await:代表等待,表示需要等待后面的异步方法执行完毕之后再执行后续的代码
let fr = async function () {
    try {
        let res = await myReadFile('./c.txt')
        console.log(res);
    } catch (err) {
        console.log('出错了');
    }
}
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。