欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Promise掃盲貼

 更新時間:2019年06月24日 14:38:31   作者:漓漾li  
這篇文章主要介紹了Promise掃盲貼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

then

then函數(shù)可以return另一個promise:

const p1 = new Promise((resolve, reject) =>{
  resolve('p1')
})
const p2 = new Promise((resolve, reject) =>{
 setTimeout(() =>{
  resolve('p2')
 },3000)
})
p1.then(res => {
 console.log(res)
  return p2
}).then(res =>{ 
  // p2 resolve后才執(zhí)行
  console.log(res)
})
//p1
// 3s后輸出...
// p2

那么這個p2就會代替當前p1的狀態(tài),等到新的p2的狀態(tài)修改時,下一個then才會執(zhí)行

catch

1. 作用

可以捕獲到promise程序執(zhí)行中的error,等同于  .then(null, rejection)  或  .then(undefined, rejection)

2. 可以獲取到的錯誤

promise函數(shù)體中拋出的error。在promise resolve后,再拋出錯誤,不會被捕獲

const p1 = new Promise((resolve,reject) => {throw new Error('error')})
p1.catch(error => console.log(error))  // Error: error

promise的reject操作

const p2 = new Promise((resolve,reject) => reject('rejected'))
p2.catch(error => console.log(error)) // rejected

then 函數(shù)體中拋出的error

const p3 = new Promise((resolve,reject) => resolve('resolved'))
p3.then(res =>{
  throw new Error('error')
}).catch(error => console.log(error)) // Error: error

then函數(shù)可以返回一個promise(如果沒有定義catch方法),如果這個promise函數(shù)體中有reject或者error,也可以捕獲到

3. 推薦使用catch方式捕獲錯誤,而不是then的第二個參數(shù):

因為catch可以捕獲到它前面所有then方法中的錯誤

finally

  • 不管promise最后狀態(tài)如何,都會執(zhí)行的操作
  • 沒有參數(shù),獲取不到當前promise最后的狀態(tài)

Promise.all

1. 參數(shù)

參數(shù)不僅僅可以是數(shù)組,具有Iterator接口的對象都可以。
數(shù)組參數(shù)的每一個元素為promise實例,如果不是,就會調用Promise.resolve轉換為Promise實例

const obj = {
  [Symbol.iterator]() {
    let index = 0
    return {
      next() {
        return {
          // promise對象 和 其他類型都可以
          value: new Promise(resolve => resolve(index++)), done: index > 2
          // value: index++, done: index > 2
        }
      }
    }
  }
}
const p = Promise.all(obj)
p.then(res => {
  console.log(res) // [0, 1]
}) 

2. 狀態(tài)

const p = Promise.all([p1, p2, p3]);

p的狀態(tài)由p1、p2、p3決定,分成兩種情況:

  • 只有p1、p2、p3的狀態(tài)都變成fulfilled,p的狀態(tài)才會變成fulfilled,此時p1、p2、p3的返回值組成一個數(shù)組,傳遞給p的回調函數(shù)。
  • 只要p1、p2、p3之中有一個被rejected,p的狀態(tài)就變成rejected,此時第一個被reject的實例的返回值,會傳遞給p的回調函數(shù)。

3. catch

如果參數(shù)中的promise定義了catch方法,那么Promise.all()的catch就不會捕獲到錯誤

Promise.race

  • 只要p1、p2、p3之中有一個實例率先改變狀態(tài),p的狀態(tài)就跟著改變。那個率先改變的 Promise 實例的返回值,就傳遞給p的回調函數(shù)。
  • 參數(shù)、catch規(guī)則同Promise.all

Promise.resolve

將現(xiàn)有對象轉為Promise對象。

1. 參數(shù)

  • 參數(shù)為promise實例:原封不動的返回這個實例。
  • 參數(shù)為thenable對象:將它轉為promise對象,然后立即執(zhí)行它的then方法
  • 參數(shù)不是thenable對象,或者是一個原始值:返回一個新的promise對象,狀態(tài)為resolved
  • 沒有參數(shù):直接返回衣蛾resolved狀態(tài)的promise對象

Promise.reject

返回一個狀態(tài)為rejected的promise實例

Promise.reject()方法的參數(shù),會原封不動地作為reject的理由,變成后續(xù)方法的參數(shù)

const thenable = {
 then(resolve, reject) {
  reject('error');
 }
};

Promise.reject(thenable)
.catch(e => {
 console.log(e === thenable)
})
// true e并不是'error'

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • js實現(xiàn)繼承的5種方式

    js實現(xiàn)繼承的5種方式

    這篇文章主要介紹了js實現(xiàn)繼承的5種方式,具體分析了JavaScript對象冒充、call()方法方式、apply()方法方式、原型鏈方式及混合方式的具體使用技巧,需要的朋友可以參考下
    2015-12-12
  • JavaScript實現(xiàn)簡易加法計算器

    JavaScript實現(xiàn)簡易加法計算器

    這篇文章主要介紹了JavaScript實現(xiàn)簡易加法計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 詳解javascript立即執(zhí)行函數(shù)表達式IIFE

    詳解javascript立即執(zhí)行函數(shù)表達式IIFE

    本文主要介紹了javascript立即執(zhí)行函數(shù)表達式IIFE的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript遍歷DOM元素的常見方式示例

    JavaScript遍歷DOM元素的常見方式示例

    這篇文章主要介紹了JavaScript遍歷DOM元素的常見方式,涉及javascript中firstChild、lastChild、firstElementChild、nextElementSibling等函數(shù)遍歷dom元素相關使用技巧,需要的朋友可以參考下
    2019-02-02
  • js獲取當前月的第一天和最后一天的小例子

    js獲取當前月的第一天和最后一天的小例子

    這篇文章主要介紹了js獲取當前月的第一天和最后一天的小例子,有需要的朋友可以參考一下
    2013-11-11
  • 原生JS實現(xiàn)手動輪播圖效果實例代碼

    原生JS實現(xiàn)手動輪播圖效果實例代碼

    手動輪播圖,為輪播圖中的一種,輪播圖主要有無縫輪播,手動輪播,延遲輪播,切換輪播等等,輪播圖主要用于展現(xiàn)圖片,新出商品,詞條,又能美觀網頁。給網頁中增加動態(tài)效果。接下來通過本文給大家分享原生JS實現(xiàn)手動輪播圖的實例代碼,一起看看吧
    2018-11-11
  • 三種帶箭頭提示框總結實例

    三種帶箭頭提示框總結實例

    這篇文章主要介紹了三種帶箭頭提示框總結實例 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • JS實現(xiàn)的自定義網頁拖動類

    JS實現(xiàn)的自定義網頁拖動類

    這篇文章主要介紹了JS實現(xiàn)的自定義網頁拖動類,涉及頁面元素響應鼠標事件動態(tài)改變屬性的相關實現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • javascript游戲開發(fā)之《三國志曹操傳》零部件開發(fā)(三)情景對話中仿打字機輸出文字

    javascript游戲開發(fā)之《三國志曹操傳》零部件開發(fā)(三)情景對話中仿打字機輸出文字

    前兩講我告訴了大家如何使人物移動,那么今天我們就來看看如何實現(xiàn)仿《三國志曹操傳》人物情景對話,感興趣的朋友可以了解下,希望本文對你有所幫助
    2013-01-01
  • 用svg制作富有動態(tài)的tooltip

    用svg制作富有動態(tài)的tooltip

    這篇文章主要介紹了用svg制作富有動態(tài)的tooltip的代碼以及制作過程,十分的細致全面,有需要的小伙伴可以參考下。
    2015-07-07

最新評論