每天學點ES6 —— Promise 幾個實用的方法

已發ES6文章:

1~14

15

16

上篇瞭解了 Promise 和它的 then 方法,本篇介紹它的其他方法。

catch( fn(error) )

catch 方法用來專門傳遞 reject 回調函數,以處理錯誤信息。

Promise 對象在處理錯誤信息時是可以傳遞的,比如有多個then調用的情況,如果第一個then沒有指定reject,錯誤信息就會被傳遞到第二個then處理,第二沒有傳到第三個,依次類推。所以往往我們只需要一個處理函數即可,catch方法就是為了方便捕獲錯誤而生。

注:實際上 catch 方法調用的是 then(null,reject)

//下面的錯誤信息穿過了2個then方法最後被catch捕獲

var p=new Promise(function(resolve,reject){

 reject(5)

});

p.then(function(){

 console.log(1);

}).then(function(2){

 console.log(2)

}).catch(function(x){

 console.log(x)

});

//5

Promise.all( arr )

此方法用來創建一個異步池,執行多個異步操作,當全部成功時,執行resolve,否則一個失敗則執行reject

參數 arr 是個數組(或具有Interator接口),每個元素都是一個Promise實例,如果不是則會被 Promise.resolve轉為Promise對象的實例。

Promise.race( arr )

類似 all 方法,此方法在其中一個異步執行完成後結束,無論是resolve還是reject都不再執行其他的異步操作。

Promise.resolve( [x] )

此方法將參數轉為一個promise對象的實例。

等同於一個直接resolve的Promise

Promise.resolve( x);

//等同於

new Promise(function(resolve){

 resolve(x)

})

注:

  • 當無參數時,返回個promise實例

  • 當參數是個Promise實例時,直接返回

Promise.reject( arr )

類似 Promise.resolve

【關注一下不迷路~】


每天學點ES6 ——  Promise 幾個實用的方法

【html】【css】【html】【css】【javascript】【html】【javascript】【css】【javascript】【css】


分享到:


相關文章: