ES 之 promise

库有axios

 const p=new Promise((resolve,reject)=>{
        resolve("success");//reject()
        
    }).then(data=>{
        console.log(data)
    }).catch(err=>console.error(err))
  • 成功返回用resolve()
  • 否者使用reject() 返回
    显示报错行数 reject(Error('fail'))
    简单使用
 const repos=[
        {name:"grit",owner:'mojomob',desc:'',id:1},
        {name:"jsavesome",owner:'vanpelt',desc:'',id:2},
        {name:"merb_core",owner:'wycats',desc:'',id:3},
    ];
    const owners=[
        {name:'mojomob',location:'loc1',follower:123},
        {name:'vanpelt',location:'loc2',follower:45},
        {name:'wycats',location:'loc3',follower:789},
    ];
    function getReposById(id){
        return new Promise((resolve ,reject)=>{
            const repo=repos.find(repo=>repo.id===id);
            if(repo){
                resolve(repo)
            }else{
                reject(Error(`not find ${id}`))
            }
        })
    }
    function  comnoundOwner(repo) {
        return new Promise((resolve,reject)=>{
            const owner=owners.find(owner=>owner.name===repo.owner)
            if(owner){
                repo.owner=owner
                resolve(repo)
            }else{
                reject(Error("cont not find the owner"))
            }
        })

    }

    getReposById(1).then(repo=>{
        return comnoundOwner(repo);
    }).then(repo=>{
        console.log(repo)
    }).catch(err=>{
        Error(console.log(err))
    })


多个promise

Promise.all()
Promise.all([promise1,promise2]).then(response=>{
        console.log(response)
        const [p1,p2]=response
    })
const promise1=new Promise((resolve,reject)=>{
        setTimeout(function(){
            resolve('promise1')
        },1000)
    })
    const promise2=new Promise((resolve,reject)=>{
        setTimeout(function(){
            reject('promise2')
        },2000)
    })
    Promise.all([promise1,promise2]).then(response=>{
        console.log(response)
        const [p1,p2]=response
    }).catch(err=>{
        Error(console.log(err))
    })
  • 所有的均reslove返回时才会执行then,否者就执行catch
Promise.race()
  • 状态由先返回来的那个的返回状态决定
   const promise1=new Promise((resolve,reject)=>{
        setTimeout(function(){
            reject('promise1')
        },1000)
    })
    const promise2=new Promise((resolve,reject)=>{
        setTimeout(function(){
            resolve('promise2')
        },2000)
    })
    Promise.race([promise1,promise2]).then(response=>{
        console.log(response)
        const [p1,p2]=response
    }).catch(err=>{
        Error(console.log("err:"+err))
    })
posted @ 2020-06-13 17:17  H&K  阅读(219)  评论(0)    收藏  举报