<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>08_自定义Promise</title>
</head>

<body>
  <script src="./lib/Promise_class.js"></script>
  <!-- <script>
    const p = new Promise((resolve, reject) => {
      setTimeout(() => {
        // resolve(1)
        reject(2)
        console.log('reject()改变状态之后')
      }, 100);
    })
    p.then(
      value => {
        console.log('onResolved1()', value)
      },
      reason => {
        console.log('onRejected1()', reason)
      }
    )
    p.then(
      value => {
        console.log('onResolved2()', value)
      },
      reason => {
        console.log('onRejected2()', reason)
      }
    )
    
  </script> -->
<!-- 
  <script>
    const p = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve(1)
        // reject(2)
      }, 100);
    }).then(
      value => {
        console.log('onResolved1()', value)
      },
      reason => {
        console.log('onRejected1()', reason)
        // return 3
        // throw 4
        return new Promise((resolve, reject) => reject(5))
      }
    ).then(
      value => {
        console.log('onResolved2()', value)
      },
      reason => {
        console.log('onRejected2()', reason)
        throw 6
      }
    ).catch(reason => {
      console.log('onRejected3()', reason)
      return new Promise(() => {})  // 中断proimise链
    }).then(
      value => {
        console.log('onResolved4()', value)
      },
      reason => {
        console.log('onRejected4()', reason)
        throw 6
      }
    )
    
  </script> -->

  <script>
    const p1 = Promise.resolve(2) // 如果是一般值, p1成功, value就是这个值
    const p2 = Promise.resolve(Promise.resolve(3)) // 如果是成功的promise, p2成功, value是这个promise的value
    const p3 = Promise.resolve(Promise.reject(4)) // 如果是失败的promise, p3失败, reason是这个promise的reason
    // p1.then(value => {console.log('p1', value)})
    // p2.then(value => {console.log('p2', value)})
    // p3.catch(reason => {console.log('p3', reason)})

    // const p4 = new Promise((resolve) => {
    //   setTimeout(() => {
    //     resolve(5)
    //   }, 1000);
    // })
    const p4 = Promise.resolveDelay(5, 1000)
    const p5 = Promise.reject(6)
    
    const pAll = Promise.all([p4, 7, p1, p2])
    pAll.then(
      values => {
          console.log('race onResolved()', values)
      },
      reason => {
          console.log('race onRejected()', reason)
      }
    )

    // const pRace = Promise.race([p4, 7, p5, p2, p3])
    // pRace.then(
    //   value => {
    //       console.log('race onResolved()', value)
    //   },
    //   reason => {
    //       console.log('race onRejected()', reason)
    //   }
    // )

    const p6 = Promise.resolveDelay(66, 2000)
    const p7 = Promise.rejectDelay(77, 3000)
    p6.then(value => {console.log('p6', value)})
    p7.catch(reason => {console.log('p7', reason)})
  </script>
</body>

</html>

自定义Promise_说明

自定义Promise_整体结构

自定义Promise_构造函数实现1

自定义Promise_构造函数实现2

自定义Promise_构造函数测试和完善

自定义Promise_then方法实现1

自定义Promise_then方法实现2

自定义Promise_then方法实现3

自定义Promise_then方法测试和完善

自定义Promise_then方法实现(第2遍)

自定义Promise_Promise的resolve和reject方法

自定义Promise_Promise的all方法

自定义Promise_Promise的race方法

自定义Promise_完善all和race方法

自定义Promise_Promise的resolveDelay和rejectDelay方法

自定义Promise_class版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值