Promise的方法-then()


1) then方法

 2)、then方法的參數

p.then(第一個參數是成功的回調函數,第二個參數是失敗的回調函數);
<script>
        const p = new Promise((resolve, reject)=> {
            // 通過調用resolve, 傳遞參數, 改變 當前promise對象的 結果
            resolve('成功的結果')
            //reject('失敗的結果')
        });

        // then方法函數
        // 參數
        // 1. 是一個成功的回調函數
        // 2. 是一個失敗的回調函數
        // 返回值: 是一個promise對象
        p.then(()=>{
        // 當promise的狀態是fulfilled時, 執行
        console.log('成功時調用')
        }, () => {
        // 當promise的狀態是rejected時, 執行
        console.log('失敗時調用')
        });
        console.dir(p)
</script>

 3)、通過調用resolve, 傳遞參數, 改變 當前promise對象的結果

<script>
        const p = new Promise((resolve, reject)=> {
            // 通過調用resolve, 傳遞參數, 改變 當前promise對象的 結果
            resolve('成功的結果')
            //reject('失敗的結果')
        });

        // then方法函數
        // 參數
        // 1. 是一個成功的回調函數
        // 2. 是一個失敗的回調函數
        // 返回值: 是一個promise對象
        //調用then方法
        //value 值
        //reason 理由
        p.then((value)=>{
        // 當promise的狀態是fulfilled時, 執行
        console.log('成功時調用'+value)
        }, (reason) => {
        // 當promise的狀態是rejected時, 執行
        console.log('失敗時調用'+reason)
        });
        console.dir(p)
</script>

 4)、then方法返回一個新的promise實例, 狀態是pending

 5)、promise的狀態不改變, 不會執行then里的方法

<script>
        // 如果promise的狀態不改變, then里的方法不會執行
        new Promise((resolve, reject) => {

        }).then((value) => {
        console.log('成功')
        }, (reason) => {
        console.log('失敗')
        });
</script>

 6)、在then方法中, 通過return將返回的promise實例改為fulfilled狀態

<script>
        // 如果promise的狀態不改變, then里的方法不會執行
        const p = new Promise((resolve, reject) => {
        resolve()
        })

        const t = p.then((value) => {
        console.log('成功')
        // 使用return可以將t實例的狀態改成fulfilled
        return 123
        }, (reason) => {
        console.log('失敗')
        })

        t.then((value) => {
        console.log('成功2', value)
        }, (reason) => {
        console.log('失敗')
        })
</script>

 7)、總結:

  • 如果promise的狀態不改變, then里的方法不會執行

  • 使用return可以將t實例的狀態改成fulfilled

8)、如果在then方法中, 出現代碼錯誤, 會將返回的promise實例改為rejected狀態

<script>
        // 如果promise的狀態不改變, then里的方法不會執行
        const p = new Promise((resolve, reject) => {
        resolve()
        })

        const t = p.then((value) => {
        console.log('成功')
        // 使用return可以將t實例的狀態改成fulfilled
        //return 123

        // 如果這里的代碼出錯, 會將t實例的狀態改成rejected
        console.log(a)

        }, (reason) => {
        console.log('失敗')
        })

        t.then((value) => {
        console.log('成功2', value)
        }, (reason) => {
        console.log('失敗', reason)
        })
</script>

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM