未进化的程序猿
人生最苦痛的是梦醒了无路可走。做梦的人是幸福的;倘没有看出可走的路,最要紧的是不要去惊醒他。鲁迅

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>

 

 

 

 

 

posted on 2020-12-06 19:09  甘茂旺  阅读(1784)  评论(0编辑  收藏  举报