天天看點

javascript 中promise對象中的all,allSettled,any,race方法

  • Promise.all()方法用于将多個 Promise 執行個體,包裝成一個新的 Promise 執行個體。Promise.all方法接收一個數組作為cans參數,數組中的元素都是promise對象,隻有數組元素的狀态都變成fulfilled,Promise.all()傳回對象的狀态才會變成fulfilled,此時數組元素的傳回值組成一個數組,傳遞給p的回調函數。隻要數組元素之中有一個被rejected,Promise.all()傳回對象的狀态就變成rejected,此時第一個數組元素被reject的執行個體的傳回值,會傳遞給p的回調函數。*
  • Promise.race()方法同樣是将多個 Promise 執行個體,包裝成一個新的 Promise 執行個體。隻要數組元素之中有一個執行個體率先改變狀态,Promise.race()方法傳回對象的狀态就跟着改變。那個率先改變的 Promise 執行個體的傳回值,就傳遞給p的回調函數。*
  • Promise.race()方法的參數與Promise.all()方法一樣,如果不是 Promise 執行個體,就會先調用下面講到的Promise.resolve()方法,将參數轉為 Promise 執行個體,再進一步處理。*
  • Promise.allSettled()方法接受一個數組作為參數,數組的每個成員都是一個 Promise 對象,并傳回一個新的 Promise 對象。隻有等到參數數組的所有 Promise 對象都發生狀态變更(不管是fulfilled還是rejected),傳回的 Promise 對象才會發生狀态變更。*
  • Promise.any()方法。該方法接受一組 Promise 執行個體作為參數,包裝成一個新的 Promise 執行個體傳回。隻要參數執行個體有一個變成fulfilled狀态,包裝執行個體就會變成fulfilled狀态;如果所有參數執行個體都變成rejected狀态,包裝執行個體就會變成rejected狀态。*
  • Promise.any()跟Promise.race()方法很像,隻有一點不同,就是Promise.any()不會因為某個 Promise 變成rejected狀态而結束,必須等到所有參數 Promise 變成rejected狀态才會結束。*
  • ECMAScript 6 入門

繼續閱讀