最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript中Promise的三種狀態(tài)示例詳解

 更新時間:2024年10月29日 08:27:10   作者:聽海邊濤聲  
這篇文章主要給大家通過講解和實踐,詳細介紹了Promise對象的三種狀態(tài):pending(待定)、fullfilled(已兌現(xiàn))、rejected(已拒絕),并通過日志查看,展示了Promise狀態(tài)的改變順序,幫助讀者更好的理解和應(yīng)用Promise,需要的朋友可以參考下

說明

通過了解Promise的三種狀態(tài),可以了解Promise對象是如何關(guān)聯(lián)的處理函數(shù),以及代碼的執(zhí)行順序。

一個Promise對象,必然處于以下幾種狀態(tài)之一:

  • pending(待定):初始狀態(tài),既沒有被兌現(xiàn),也沒有被拒絕
  • fullfilled(已兌現(xiàn)):操作成功完成
  • rejected(已拒絕):操作失敗

Promise對象一旦被兌現(xiàn)或拒絕了,就是已敲定了,狀態(tài)無法再被改變。

示例

Promise創(chuàng)建后處于pending狀態(tài)

注意:下面代碼中,為了有時間查看狀態(tài),所以setTimeout的超時時間可以設(shè)置得大一些,如果設(shè)置成1秒、2秒,可能來不及看,狀態(tài)就改變了。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>認識Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標:認識Promise狀態(tài)
    */
    // 1. 創(chuàng)建Promise對象
    const p = new Promise((resolve, reject) => {
      // 2. 執(zhí)行異步代碼
      setTimeout(() => {
        // resolve('模擬AJAX請求-成功結(jié)果')
        reject(new Error('模擬AJAX請求-失敗結(jié)果'))
      }, 5000)
    })
    console.log(p)

    // 3. 獲取結(jié)果
    p.then(result => {
      console.log(result)
    }).catch(error => {
      console.log(error)
    })


  </script>
</body>

</html>

通過打印日志查看Promise的成功狀態(tài)的改變順序

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>認識Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標:認識Promise狀態(tài)
    */
    // 1. 創(chuàng)建Promise對象
    const p = new Promise((resolve, reject) => {
      // Promise對象創(chuàng)建時,這里面的代碼都會被執(zhí)行了,然后then()內(nèi)的回調(diào)函數(shù)執(zhí)行
      console.log('Promise對象內(nèi)開始執(zhí)行')
      // 2. 執(zhí)行異步代碼
      setTimeout(() => {
      	// 當(dāng)resolve被調(diào)用后,Promise狀態(tài)就變成了fullfilled狀態(tài)
        resolve('模擬AJAX請求-成功結(jié)果')
        // reject(new Error('模擬AJAX請求-失敗結(jié)果'))
      }, 5000)
    })
    console.log(p)

    // 3. 獲取結(jié)果
    p.then(result => {
      console.log(result)
    }).catch(error => {
      console.log(error)
    })


  </script>
</body>

</html>

5秒(代碼中定時器設(shè)置的是5000毫秒)以后,狀態(tài)改變?yōu)閒ullfilled:

通過打印日志查看Promise的失敗狀態(tài)的改變順序

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>認識Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標:認識Promise狀態(tài)
    */
    // 1. 創(chuàng)建Promise對象
    const p = new Promise((resolve, reject) => {
      // Promise對象創(chuàng)建時,這里面的代碼都會被執(zhí)行了
      console.log('Promise對象內(nèi)開始執(zhí)行')
      // 2. 執(zhí)行異步代碼
      setTimeout(() => {
        // 當(dāng)resolve被調(diào)用后,Promise狀態(tài)就變成了fullfilled狀態(tài),然后then()內(nèi)的回調(diào)函數(shù)執(zhí)行
        // resolve('模擬AJAX請求-成功結(jié)果')
        // 當(dāng) reject被調(diào)用后,Promise狀態(tài)就變成了rejected狀態(tài),然后catch()內(nèi)的回調(diào)函數(shù)執(zhí)行
        reject(new Error('模擬AJAX請求-失敗結(jié)果'))
      }, 5000)
    })
    console.log(p)

    // 3. 獲取結(jié)果
    p.then(result => {
      console.log(result)
    }).catch(error => {
      console.log(error)
    })


  </script>
</body>

</html>

過了5秒以后:

resolve和reject函數(shù)都打開,一個執(zhí)行以后,狀態(tài)就不會再改了

5秒鐘以后:

總結(jié) 

到此這篇關(guān)于javascript中Promise的三種狀態(tài)的文章就介紹到這了,更多相關(guān)javascript Promise狀態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS將秒換成時分秒實現(xiàn)代碼

    JS將秒換成時分秒實現(xiàn)代碼

    將秒換成時分秒的方法有很多,在本文將為大家介紹下,使用js的具體的實現(xiàn)思路,有需要的朋友可以參考下,希望對大家有所幫助
    2013-09-09
  • JS獲取DropDownList的value值與text值的示例代碼

    JS獲取DropDownList的value值與text值的示例代碼

    本篇文章主要是對JS獲取DropDownList的value值與text值的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • ECharts儀表盤實例代碼(附源碼下載)

    ECharts儀表盤實例代碼(附源碼下載)

    大家在汽車駕駛艙里一眼就可以看到儀表盤,使用使用Echarts制作的儀表盤可以輕松展示用戶的數(shù)據(jù),清晰的看出某個指標值所在的范圍,儀表盤形式的報表應(yīng)用在各種統(tǒng)計系統(tǒng)中,本文結(jié)合實例講解儀表盤在銷售任務(wù)完成率的統(tǒng)計應(yīng)用
    2016-02-02
  • 微信小程序基礎(chǔ)教程之worker線程的使用方法

    微信小程序基礎(chǔ)教程之worker線程的使用方法

    這篇文章主要給大家介紹了關(guān)于微信小程序基礎(chǔ)教程之worker線程的使用方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • JavaScript常用代碼書寫規(guī)范的超全面總結(jié)

    JavaScript常用代碼書寫規(guī)范的超全面總結(jié)

    這篇文章給大家全面總結(jié)了JavaScript常用代碼的書寫規(guī)范,分別利用推薦和不推薦的兩種示例代碼讓大家更能直接的了解書寫規(guī)范,其實關(guān)于javascript代碼規(guī)范我們應(yīng)該遵循古老的原則:“能做并不意味著應(yīng)該做”,好了,下面我們就來一起看看吧。
    2016-09-09
  • TS中最常見的聲明合并(接口合并)

    TS中最常見的聲明合并(接口合并)

    這篇文章主要介紹了TS中最常見的聲明合并:接口合并,TS中的聲明合并,指的就是編譯器會針對同名的聲明合并為一個聲明,合并后的聲明會同時擁有原先兩個或多個聲明的特性,接口的合并也是一樣,它會將雙方的成員放到一個同名的接口里,更多詳細內(nèi)容請參考下面文章內(nèi)容

    2021-12-12
  • 一文讀懂TS?中聯(lián)合類型和交叉類型各自的含義

    一文讀懂TS?中聯(lián)合類型和交叉類型各自的含義

    聯(lián)合類型在?TypeScript?中相當(dāng)流行,你可能已經(jīng)用過很多次了。交叉類型稍微不那么常見,它們似乎引起更多的困惑,這篇文章主要介紹了一文讀懂TS?中聯(lián)合類型和交叉類型的含義,需要的朋友可以參考下
    2022-12-12
  • javascript 二進制運算技巧解析

    javascript 二進制運算技巧解析

    javascript 中的二進制運算的一些技巧,曬出來和你們分享一下,希望可以幫助你們
    2012-11-11
  • javascript/jquery獲取地址欄url參數(shù)的方法

    javascript/jquery獲取地址欄url參數(shù)的方法

    本篇文章主要是對javascript/jquery獲取地址欄url參數(shù)的方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • 菜單效果

    菜單效果

    菜單效果...
    2006-10-10

最新評論

彭阳县| 上杭县| 桓台县| 平塘县| 长子县| 兴国县| 卢氏县| 巴青县| 江城| 武宣县| 万安县| 普安县| 崇左市| 贺兰县| 枣庄市| 湘西| 九龙坡区| 新密市| 兴城市| 内乡县| 眉山市| 改则县| 玛多县| 惠水县| 洛浦县| 西林县| 体育| 沙湾县| 宝兴县| 广东省| 罗江县| 南陵县| 淮北市| 武平县| 周至县| 鹤庆县| 扬中市| 延长县| 新巴尔虎右旗| 玉山县| 柘荣县|