前言: 在上一篇文章中,咱們熟知了什麼是promise,怎麼去使用它,經過它的then方法來調用在不一樣狀態下觸發的兩個函數。今天我將向你們介紹promise的其餘的集中方法。數組
Promise其餘的幾種方法:promise
###以下: 1、catch方法:函數
get_promise('test1.txt')
.then(data => console.log('當promise切換到fulfill狀態下會調用的函數'))
.catch(error =>
console.log('當promise切換到reject狀態時,catch函數會被調用')
)
######注意:catch是可選的,就是說並非必須被調用。
2、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對象返回的結果
})
3、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的結果。
複製代碼