关于promise对象学习

  • 我们在使用函数的时候经常需要在函数的参数传入另外一个函数,一层一层传递,很容易造成回调地狱,这样的代码不利于维护;
  • promise是个构造函数对象,解决了回调问题,它有三种状态,resolve,reject,pedding,常用到的方法则有 then,catch,all,race
  • 这是我看到有关promise入门最好的文章https://juejin.im/post/5afe6d3bf265da0b9e654c4b
      //  let p = new Promise((resolve,reject)=>{
    //      setTimeout(function(){
    //          var num = Math.ceil(Math.random()*10)
    //          if(num<=5){
    //              resolve(num)
    //          }
    //          else{
    //              reject('数字太大了')
    //          }
    //      },1000)
    //  })
     
     //reject用法
    //  p.then((data)=>{
    //      console.log('resolved',data)
    //  },(err)=>{
    //      console.log('rejected',err)
    //  })


    //catch的用法
    // p.then((data) => {
    // console.log('resolved',data);
    // console.log(somedata); //此处的somedata未定义
    // })
    // .catch((err) => {
    //     console.log('rejected',err);
    // })


    //all的用法
    // let p1=new Promise(function(resolve,reject){})
    // let p2=new Promise(function(resolve,reject){})
    // let p3=new Promise(function(resolve,reject){})

    // let p = Promise.all([p1,p2,p3])
    // p.then(function(){
    //     // 三个都成功则成功  
    // },function(){
    //     // 三个都成功则成功  
    // })

    //race的用法
    // function requestImg(){
    //     var p = new Promise((resolve,reject)=>{
    //         var img = new Image();
    //         img.onload=()=>{
    //             resolve(img)
    //         }
    //         img.src='图片的路径'
    //     })
    //     return p;
    // }
    // function timeout(){
    //     var p = new Promise((resolve,reject)=>{
    //         setTimeout(()=>{
    //             reject('图片请求超时')
    //         },5000)
    //     })
    //     return p;
    // }
    // Promise.race([requestImt(),timeout()]).then((data)=>{
    //     console.log(data)
    // }).catch((err)=>{
    //     console.log(err)
    // })

你可能感兴趣的:(关于promise对象学习)