promise的用法

1.resolve(),reject()分別對應then(),.catch()

let promise = new Promise((resolve, reject) => {
    reject()
//可以傳參,如:resolve(1111),那麼.then的response可以接受這個參數。
//reject(2222),那麼.catch的error可以接受這個參數。
}

 

 2..then(),.catch(),分別對應resolve(),reject()。

<script>
let promise = new Promise((resolve, reject) => {
    reject(111)
})
promise.then(response => { //調用resolve()時執行
    console.log('成功')
    console.log(response)  //控制檯打印111
}).catch(error =>{         
    console.log('222')     //如果promise實例調用reject(),控制檯會輸出222
})
</script>

3.鏈式

function promise1(status){
    return new Promise((resolve,reject) => {
        if(status){
            console.log('promise1 resolve')
            resolve('promise1返回數據成功')    
        }
        if(!status){
            console.log('promise1 reject')   //打印在控制檯
            reject('promise1返回數據失敗')    //reject()內的參數打印在出錯信息裏,
            //.then或者.error接收參數之後,可以console.log(response),此時就會輸出在控制檯
        }
        reject(222)
    })
}

function promise2(status){
    return new Promise((resolve,reject) => {
        if(status){
            console.log('promise2 resolve')
            resolve('promise2返回數據成功')    
        }
        if(!status){
            console.log('promise2 reject') 
            reject('promise2返回數據失敗')    
        }
        reject(222)
    })
}

function promise3(status){
    return new Promise((resolve,reject) => {
        if(status){
            console.log('promise3 resolve')
            resolve('promise3返回數據成功')    
        }
        if(!status){
            console.log('promise3 reject')   
            reject('promise3返回數據失敗')    
        }
        reject(222)
    })
}
promise1(true)

promise1(false).then(response => {//單獨調用
    console.log(response)
}).catch(error => {
    conlole.log(err)
})

promise1(false).then(response => {//鏈式調用
    console.log(response)
    return promise3(true)
}).then(response => {
    console.log(response)
    return promise2(false)
}).catch(error => {
    console.log(error)
}).catch(error => {
    conlole.log(err)
})

4..all()數組內有promi,必須全部成功纔會執行.then回調,有一個不成功就會執行.catch


Promise.all([promise1(true),promise2(true),promise3(false)]).then(response => {
    console.log('全部調用成功')
}).catch(error => {
    console.log('沒有全部調用成功') 
})

5. .race(),數組內遇到返回結果爲resolve就會繼續鏈式執行,即只要有一個是resolve,就代表成功,但是如果第一個promise結果是reject,則失敗。

Promise.all([promise1(true),promise2(true),promise3(false)]).then(response => {
    console.log('全部調用成功')
}).catch(error => {
    console.log('沒有全部調用成功') 
})

Promise.all([promise1(false),promise2(true),promise3(false)]).then(response => {
    console.log('全部調用成功')
}).catch(error => {
    console.log('沒有全部調用成功') 
})

 

發佈了58 篇原創文章 · 獲贊 44 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章