美文网首页
Promise 对象

Promise 对象

作者: 梦安web开发 | 来源:发表于2020-12-02 05:24 被阅读0次

    Promise 是异步编程的一种解决方案,比传统的解决方案 —— 回调函数和事件 —— 更合理和更强大。

    1、Promise 的基本使用

    Promise 是一个构造函数,通过new来实例对象。

    const promise = new Promise((resolve, reject)=>{})
    

    函数中接收的两个参数

    • resolve :成功函数
    • reject :失败函数
    1)Promise 三大状态
    • pending:进行中
    • fulfilled:已成功
    • rejected:已失败
    2)Promise 状态的改变

    Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。
    示例

    var  promise=new Promise((resolve, reject)=>{
        resolve()  调用函数,使当前promise对象状态fulfilled
        reject() 调用函数,使当前promise对象状态rejected
    })
    
    3)Promise 的结果

    示例

    var  promise=new Promise((resolve, reject)=>{
       //通过调用resolve函数,传递参数,改变当前promise对象的结果
        resolve('成功的结果')  
        //reject('失败的结果') 
    })
    console.dir(promise)
    

    2、Promise 的方法

    1)then()的方法
    var  promise=new Promise((resolve, reject)=>{     
       //通过调用resolve函数,传递参数,改变当前promise对象的结果
        resolve('成功的结果')  
        //reject('失败的结果') 
    })
    promise.then((res)=>{
        //当promise 状态是fulfilled时 执行
        console.log('成功调用') 
    },()=>{
       //当promise 状态是reject时 执行
       console.log('失败调用')
    })
    console.dir(promise)
    

    在then方法中,通过return将返回Promise实例的改为fulfilled状态
    如果then方法中代码出错,会将Promise实例的改为rejected状态

    //如果Promise状态不改变,then的方法不执行
    var  promise=new Promise((resolve, reject)=>{     
        resolve('成功的结果')  
    })
    const t=promise.then((res)=>{
        //使用return  可以将t实例的状态改为fulfilled
        //如果在这里代码出错,会将Promise实例的改为rejected状态
        console.log('成功调用') 
        return  1212
    },()=>{
       console.log('失败调用')
    })
    
    t.then((res)=>{
        console.log('成功2') 
    },()=>{
       console.log('失败调用')
    })
    
    1)catch()的方法

    catch()方法是.then(null, rejection).then(undefined, rejection)的别名,用于指定发生错误时的回调函数(代码出错及Promsie的状态为rejected时执行)。

    Promise('/posts.json').then(function(posts) {
      // ...
    }).catch(function(error) {
      // 处理 Promise和 前一个回调函数运行时发生的错误
      console.log('发生错误!', error);
    });
    

    相关文章

      网友评论

          本文标题:Promise 对象

          本文链接:https://www.haomeiwen.com/subject/ajdhiktx.html