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

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

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

說明

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

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

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

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

示例

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

注意:下面代碼中,為了有時(shí)間查看狀態(tài),所以setTimeout的超時(shí)時(shí)間可以設(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>認(rèn)識(shí)Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標(biāo):認(rèn)識(shí)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>認(rèn)識(shí)Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標(biāo):認(rèn)識(shí)Promise狀態(tài)
    */
    // 1. 創(chuàng)建Promise對象
    const p = new Promise((resolve, reject) => {
      // Promise對象創(chuàng)建時(shí),這里面的代碼都會(huì)被執(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í)器設(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>認(rèn)識(shí)Promise狀態(tài)</title>
</head>

<body>
  <script>
    /**
     * 目標(biāo):認(rèn)識(shí)Promise狀態(tài)
    */
    // 1. 創(chuàng)建Promise對象
    const p = new Promise((resolve, reject) => {
      // Promise對象創(chuàng)建時(shí),這里面的代碼都會(huì)被執(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ù)都打開,一個(gè)執(zhí)行以后,狀態(tài)就不會(huì)再改了

5秒鐘以后:

總結(jié) 

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了TS中最常見的聲明合并:接口合并,TS中的聲明合并,指的就是編譯器會(huì)針對同名的聲明合并為一個(gè)聲明,合并后的聲明會(huì)同時(shí)擁有原先兩個(gè)或多個(gè)聲明的特性,接口的合并也是一樣,它會(huì)將雙方的成員放到一個(gè)同名的接口里,更多詳細(xì)內(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 二進(jìn)制運(yùn)算技巧解析

    javascript 二進(jìn)制運(yùn)算技巧解析

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

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

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

    菜單效果

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

最新評論

饶阳县| 滨州市| 民和| 饶河县| 台北市| 大余县| 普定县| 新民市| 深泽县| 泰兴市| 监利县| 惠东县| 西畴县| 固阳县| 崇礼县| 聂拉木县| 张家港市| 安福县| 黔东| 福清市| 大悟县| 衡山县| 淅川县| 广饶县| 克东县| 吕梁市| 大悟县| 漾濞| 祁阳县| 南宁市| 阳朔县| 斗六市| 延川县| 仙桃市| 松阳县| 巴里| 宽甸| 富民县| 吴江市| 洛浦县| 宿州市|