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