Question | 说一说promise是什么与使用方法?

Promise是什么

promise 是 ES6 引入的异步编程的新解决方案。(解决回调地狱)让代码的可读性更高,更容易维护 。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

Promise使用

  1. Promise构造函数接收一个函数作为参数,我们需要处理的异步任务就写在该函数体内,该函数的两个参数是resolve,reject。异步任务执行成功时调用resolve函数返回结果,反之调用reject。
  2. Promise对象的then方法用来接收处理成功时响应的数据,catch方法用来接收处理失败时相应的数据。
  3. Promise的链式编程可以保证代码的执行顺序,前提是每一次在than做完处理后,一定要return一个Promise对象,这样才能在下一次then时接收到数据。

Promise的特点

  1. 对象的状态不受外界影响(Promise对象代表一个异步操作,有三种状态)。 - pending(执行中) - Resolved(成功,又称Fulfilled) - rejected(拒绝) 其中pending为初始状态,fulfilled和rejected为结束状态(结束状态表示promise的生命周期已结束)。
  2. 一旦状态改变,就不会再变,任何时候都可以得到这个结果。 Promise对象的状态改变,只有两种可能(状态凝固了,就不会再变了,会一直保持这个结果):
    • 从Pending变为Resolved
    • 从Pending变为Rejected
  3. resolve 方法的参数是then中回调函数的参数,reject 方法中的参数是catch中的参数
  4. then 方法和 catch方法 只要不报错,返回的都是一个Resolved 状态的promise
  5. Promise最大的问题就是代码冗余,原来的异步任务被Promise封装一下,不管什么操作都用then

Promise的其他方法

  1. Promise.resolve() :返回的Promise对象状态为fulfilled,并且将该value传递给对应的then方法。
  2. Promise.reject():返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法。
        // 实例化promise对象
        const p = new Promise(function (resolve, reject) {
    
    
            setTimeout(function () {
    
    
                // 数据读取成功
                // let data = '数据库中的用户数据';
                // resolve(data);

                // 数据读取失败
                let err = '数据读取失败';
                reject(err);
            }, 1000)
        });
        // 调用promise对象的then方法
        p.then(function (value) {
    
     // 数据读取成功,调用then里面的第一个形参
            console.log(value); // 数据库中的用户数据
        }, function (reason) {
    
     // 数据读取失败,调用then里面的第二个参数
            console.log(reason);  // 数据读取失败
        })

猜你喜欢

转载自blog.csdn.net/muziqwyk/article/details/127019727