promise的基础

2022-11-01 13:28:28

promise的基本使用

new promise((reslove,reject)=>{}) 

const fun = () =>{
        return new Promise(()=>{

        })
    }
  fun().then

promise是一个构造函数,接受一个函数作为参数

函数里面接受两个参数resolve,reject

promise实例的两个属性

  • state:状态

  • result:结果

1、promise的状态

  1. pending(准备,待解决,进行中)

  2. fulfilled(已完成,成功)

  3. reject(已拒绝,失败)

2、promise状态的改变

通过resolve和reject可以改变promise的状态

示例

 var p = new Promise((resolve,reject)=>{
        // 调用resolve()会使状态变成fulfilled成功状态
        // 调用reject()会使状态变成rejected失败状态
        // resolve()//fulfilled
        reject()//rejected
    })

    console.log(p);

注:promise的状态改变是一次性的

3、promise的结果

示例

 var p = new Promise((resolve,reject)=>{
        // 调用resolve()传递参数会改变当前promise对象的结果,传递的参数即为promise当前的结果
        //调用reject()传递参数会改变当前promise对象的结果,传递的参数即为promise当前的结果
        resolve('成功的结果')//fulfilled,'成功的结果'
        // reject('失败的结果')//rejected,'失败的结果'
    })

    console.log(p);

promise的方法

promise的所有方法

1、then()方法

then方法的使用

var p = new Promise((resolve,reject)=>{
        // 调用resolve()传递参数会改变当前promise对象的结果,传递的参数即为promise当前的结果
        //调用reject()传递参数会改变当前promise对象的结果,传递的参数即为promise当前的结果
        // resolve('成功的结果')//fulfilled,'成功的结果'
        reject('失败的结果')//rejected,'失败的结果'
    })
    const fun = () =>{
        return new Promise(()=>{

        })
    }
    // then一共有两个参数,第一个参数是promise状态为fulfilled成功时调用的函数,
    // 第二个是promise状态为reject失败时调用的函数 
    p.then(()=>{
        // promise状态为fulfilled成功时调用
        console.log(111)//111
    },()=>{
        // 第二个是promise为reject 
        console.log(222)//222
    })
    fun().then()
    console.log(p);

注:promise的then方法返回一个新的promise实例,状态是pending

注: 如果promise的状态不改变为pending(准备,待解决,进行中),则then方法不会执行

// 如果promise的状态不改变为pending(准备,待解决,进行中),则then方法不会执行
        new Promise((resolve,reject)=>{

        }).then(()=>{
            console.log('成功');
        },()=>{
            console.log('失败');
        })

注:在then方法中

  // 如果promise的状态不改变为pending(准备,待解决,进行中),则then方法不会执行
        new Promise((resolve,reject)=>{
            resolve()//调用resolve方法会将这个promise改为fulfilled(已完成,成功),则下一个.then()会执行第一个函数并返回一个状态为fulfilled(已完成,成功)的promise,所以下下个.then方法也会执行第一个函数
        }).then(()=>{
            console.log('成功');
            console.log(a);//因为没有a所以这个then会错误,所以下一个.then会打印出‘失败2’
        },()=>{
            console.log('失败');
        }).then(()=>{
            // 前面.then方法的promise的状态为pending,所以这个.then的方法的状态也不会执行依旧为pending状态,如果要改变这个.then的状态需要将上一个
            // .then的状态改变,需要将promise的状态改成resolve或者为reject
            console.log('成功2');
        },()=>{
            console.log('失败2');
        }
        )

2、catch()方法

catch什么时候会被调用?

  1. 当promise状态为reject失败的状态会被调用

  2. 当promise执行出现错误会被调用

注:.catch和then一样会返回一个新的状态为pending的promise

注:catch和then的第二个参数函数的不同是catch的参数可以进行错误提示

示例:

 <script>
        var p = new Promise((resolve,reject)=>{
            // reject()//当promise状态为reject时会被执行
            console.log(a);//当promise执行出现错误会被调用
        })
        // catch什么时候会被执行
        // 1、当promise状态为reject时会被执行,和then的第二个参数函数的不同是,catch会进行错误提示
       p.catch((reason)=>{
            console.log('失败',reason);//reason参数是错误的信息
       })
        // console.log(a);//catch同样会返回一个新的状态为pending的promise
        // console.log(p);//状态为pending
    </script>
  • 作者:小二,来杯奶茶
  • 原文链接:https://blog.csdn.net/weixin_46030955/article/details/126733177
    更新时间:2022-11-01 13:28:28