Promise的使用

Promise - 承诺

       + 一个承诺多少个状态

        => 持续 pending

        => 成功 resolved

        => 失败 rejected

       + ES6 的语法

        => 专门用来解决回调地狱问题

Promise的语法

        + Promise 是 ES6 内置的构造函数

        + 语法: new Promise(function(){ 你要执行的异步的事情 })

          => 实例化的时候,这个函数接收两个参数

          => resolve,reject

        + 语法:

          => 实例化对象身上有两个方法

            1.then( )

              -> promise对象.then( function(  ){    } )

            2.catch( )

              -> promise对象.catch( function(  ){    } )

          => then方法的函数传递给了 实例化的 resolve

          => catch方法的函数传递给了实例化的 reject

    // 1.基础语法
    var num = 1
    var p = new Promise(function(resolve,reject){
      // resolve 是成功的回调
      // 当你书写resolve()的时候,实际上是在调用 then 里面的函数
      // reject 是失败的回调
      // 当你书写reject()的时候,实际上是在调用 catch 里面的函数

      // 异步事情
      setTimeout(()=>{
        if(num){
          resolve('这是一个成功的回调')
        }else{
          reject('这是一个失败的回调')
        }
      },3000)
    })

    
    p.then(function(res){
      console.log(res)
    })

    p.catch(function(err){
      console.log(err)
    })

Promise进阶语法

        + 当你在一个 promise 对象的 this 里面返回一个新的 promise 对象

        + 你可以在这个then的后面继续来一个then接收第一个then里面 promise 对象的结果

    // 2.进阶语法
    var num = 1
    var str = '成功'
    var p1 = new Promise(function(resolve,reject){
      setTimeout(() => {
        resolve('我是第一个Promise成功的回调')
      }, 3000);
    })

    var p2 = p.then(function(res){
      console.log(res)

      // 向外暴露一个新的 Promise
      return new Promise(function(resolve,reject){
        setTimeout(() => {
          if(str == '成功'){
            resolve('我是第二个Promise成功的回调')
          }else{
            reject('我是第二个Promise失败的回调')
          }
        }, 5000);
      })
    })

    p2.then(function(res){
      console.log(res)
    })


    p2.catch(function(err){
      console.log(err)
    })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值