前言: 在上一篇文章中,我們熟知了什麼是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的結果。
複製程式碼