改变promise状态 和指定回调函数谁先谁后?

3.改变promise状态 和指定回调函数谁先谁后?

(1) 都有可能,正常情况下是先指定回调函数再改变状态,但是也可以先改变状态再指定回调函数
(2) 如何先改变 状态再指定回调?
在执行器中 直接调用resolve()/reject()
延迟更长时间才调用then()
(3)什么时候才能得到数据?
如果先指定回调,当状态发生改变时,回调函数就会调用,得到数据
如果先改变转态,那指定 回调时,回调函数就会调用,得到数据

.then是同步
里面调用 的resolve,reject都是异步函数,怎么验证?
在先改变状态 ,后指定回调函数的例子里 最后加入console.log("-----------------------");
先输出-------------------则resolve,reject是异步

//先指定回调函数 ,后改变状态(同时指定数据)
    new Promise((resolve,reject)=>{
        setTimeout(()=>{//后改变状态(同时指定数据),异步执行回调函数
            reject(1)
        },1000)

    }).then(//先指定回调函数 ,保存当前指定的回调函数
        value=>{},
        reason=>{
            console.log("reason",reason)
        }
    )


     //先改变状态 ,后指定回调函数
     new Promise((resolve,reject)=>{
        //先改变状态(同时指定数据),
            resolve(2)
       
    }).then(//后指定回调函数 ,    异步执行回调函数,看.then的时候是成功还是失败来决定执行哪个函数
        value=>{console.log("value2",value)},
        reason=>{
            console.log("reason2",reason)
        }
    )

    //验证resolve,reject都是异步操作
    console.log("-----------------------");





    const p=new Promise((resolve,reject)=>{
        setTimeout(()=>{//先改变状态(同时指定数据)
            reject(3)
        },1000)

    })
    setTimeout(()=>{
        p.then(//后指定回调函数 
            value=>{},
            reason=>{
                console.log("reason3",reason)
            }
        )
    },1100)

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值