關於Promise後續的方法。

前端小鐵人發表於2019-10-29

前言: 在上一篇文章中,我們熟知了什麼是promise,怎麼去使用它,通過它的then方法來呼叫在不同狀態下觸發的兩個函式。今天我將向大家介紹promise的其他的集中方法。

Promise其他的幾種方法:

###如下: 一、catch方法:

get_promise('test1.txt')
    .then(data => console.log('當promise切換到fulfill狀態下會呼叫的函式'))
    .catch(error => 
    console.log('當promise切換到reject狀態時,catch函式會被呼叫')
    )
    ######注意:catch是可選的,就是說並不是必須被呼叫。
    
    
二、all方法:

Promise.all([promise物件1,promise物件2,promise物件3])
promise.all這個方法返回的是一個promise物件,當all引數中的陣列中的所有元素都resolve了,會呼叫promise.all返回的promise物件的then方法。
如:
    Promise.all([promise物件1,promise物件2,promise物件3]).then(function() {
        引數陣列中的每一個元素都resolve了,這個函式才會被呼叫
    })
    
    部分人可能聽到引數是個陣列這塊可能會是一頭霧水,在這我給大家舉個例項。
    let array = [
        promise_1('test_1.txt'),
        promise_2('test_2.txt'),
        promise_3('test_3.txt')
    ]
    
    promise.all(array).then(data=>{
        console.log(data)
        //值得注意的是,這裡的data是一個陣列,因為之前all的引數是一個陣列,data這個陣列中的每一個元素都是對應位置promise物件返回的結果
    })
    
    三、race方法:
        race方法其實是和all方法有相似之處。
        Promise.race([promise物件1,promise物件2,promise物件3])
        在這裡,我們會得到這個陣列中第一個resolve的物件
        如:
        Promise.race(array).then(data => {
            console.log(data)
        })
        
        ***之所以說它與all方法是有相似的,是因為他們的引數都是一個陣列,不同之處是all的方法是全都resolve之後,程式才繼續執行;而race方法是隻要是陣列中的眾多promise物件,有一個resolve了,程式就會繼續執行,此時傳入then中的引數data,就是一個物件,那個resolve元素的promise物件的resolve的結果。
複製程式碼

相關文章