Promise.resolve(),Promise.reject()和.then().catch()取值问题

var p1 = Promise.resolve(2)
  // console.log(p1)
  // 成功状态
  p1.then(res=>{
    // console.log(res) // 2
  })
  var p2 = new Promise((resolve) => resolve(2))
  p2.then( res =>{
    // console.log(res) // 2
  })
  Promise.resolve(p2).then(res=> {
    // console.log(res) // 2
  })
  console.log(Promise.reject(p2)) // 会在外层包一层rejeceted 状态
  Promise.reject(p2).catch(err=>{
    // console.log(err) // 但如果在用.catch捕捉一下就看到原来返回实例状态 同时浏览器报错
    // err.catch(err=>{
    //   // console.log(err) // 没有反应
    // })
  })
  // 失败状态
  var p3 = new Promise((_,reject)=>reject('err6'))
  // Promise.resolve(p3).then(res=>{
  //   // console.log(res) // Uncaught (in promise) err 返回的失败信息不能用.then进行捕捉
  // })
  // Promise.reject(p3).then(res=>{
  //   // console.log(res) // Uncaught (in promise) Promise {<rejected>: 'err'} 把值当成错误返回 用.then()能看到错误信息但是浏览器会报错
  // })
  // console.log(p3) // 拿到失败状态的promise实例
  // console.log(Promise.resolve(p3)) // 拿到失败状态的promise实例
  Promise.resolve(p3).catch(err=>{
    // console.log(err) // err6
  })
  // console.log(Promise.reject(p3)) // 在失败状态的promise实例外面套了一层失败实例 同时浏览器报错
  Promise.reject(p3).catch(err=>{
    // console.log(err) // 拿到失败状态的promise实例
    err.catch(err1 => {
      // console.log(err1) // err6 需要再解构一层
    })
  })
  
//  var p4 = Promise.reject(2)
  // p4.then(err=>{
    // console.log(err + 1) // 能看到错误信息,但是浏览器会报错,加法也不会执行
  // })
  // p4.catch(err=>{
  //   console.log(err) // 2 能拿到信息,浏览器也不报错
  // })

  // Promise.resolve().then(console.log) // undefined   什么都不传就取值会返回undefined
    // var p6 = new Promise((resolve,reject)=>{
    //     resolve(2)
    //     reject('err')
    //   })
    
    // console.log(p6)
   // 总结:如果通过Promise.resolve()或Promise.reject()直接返回的确定值的实例进行取值,可以通过实例.then()或.catch()进行取值 它的实例是一个确定的状态实例
  // 如果是通过 return new Promise((resolve,reject)=>resolve(),reject())这样  reject()在resolve()之前返回的话浏览器会报错 在resolve()之后返回会返回成功实例,然后在通过实例.then()或.catch()进行取值,虽然可以在接着Promise.resolve()或Promise.reject()但是完全没必要这样做
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容