关于promise理解

Promise
解决回调地狱的方案之一
把回调地狱写的优雅的方案之一

Promise 单词
承诺
这个承诺有几个状态(三个)
1. 承诺继续 => 两个人在一起过日子
2. 成功 => 最后两个人埋在一个坟里面
3. 失败 => 有一个人埋在别人的坟里
一旦状态确定, 不可变更
=> 继续 -> 成功
=> 继续 -> 失败
=> 不可能由成功转变为失败
对应在 Promise 的语法里面的时候
=> 继续 -> pending -> 正在进行时
=> 成功 -> fulfilled -> 过去完成时
=> 失败 -> rejected -> 过去完成时

Promise 是做什么的
承诺会帮你做 异步的事情
会在成功的时候给你一个成功的回调
会在失败的时候给你一个失败的回调
我们把异步的事情交给 promise 来做
=> 我们等待结果就好
=> pending 继续, 也就是正在帮你做这个异步的事情
=> fulfilled 成功, 结果
=> rejected 失败, 结果

Promise 类比在 ajax 请求里面
=> pending 就是正在请求(网络传输过程中)
=> fulfilled 就是请求成功了(网络环境允许请求, 可以连接到服务器拿到结果)
=> rejected 就是请求失败了(突然没有网了, 掉线了, 不会再有结果回来了)

Promise 的语法
在 es6 里面有一个内置的构造函数叫做 Promise
语法: let p1 = new Promise(function () { 你要做的异步的事情 })
promise 对象里面由两个方法
一个叫做 then => 就是 p1 帮你做的异步的事情成功的时候执行的
一个叫做 catch => 就是 p1 帮你做的异步的事情失败的时候执行的

  //   先用定时器来模拟
    var p1 = new Promise(function (resolve, reject) {
      // 帮我做一件异步的事情
      var xhr = new XMLHttpRequest()

      xhr.open('GET', './server/a.php')

      xhr.onreadystatechange = function () {
        if (xhr.status === 200 && xhr.readyState === 4) {
          resolve(xhr.responseText) // 实参
          // 给的就是后端返回的内容
        }

        if (xhr.status === 404) {
          reject('请求地址不对')
        }
      }

      xhr.send()
    })
 // then 函数
    p1.then(function (res) { // 形参
      console.log('我执行了, 我表示成功')
      // res 接受到的就是 resolve () 里面的实参 => 100
      // res 接收到的就是 后端返回的内容
      console.log(res)
    })

    // catch 函数
    p1.catch(function () {
      console.log('我执行了, 我表示失败')
    })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值