vue promise用法 原理

Promise是一个用于处理异步操作的对象,提供了一种更优雅的方式来处理回调函数,避免了回调地狱。它有三种状态:pending、fulfilled和rejected,状态一旦确定就不会改变。在Vue中,Promise帮助开发者清晰地分离执行代码和处理结果,使得异步操作的流程更加同步化。通过示例,展示了Promise如何简化复杂的异步操作,提高代码可读性和维护性。
摘要由CSDN通过智能技术生成

promise 就是一个容器 里面保存着未来才会结束的事件
通常就是异步操作的结果 从语法上说 promise 是一个对象
可以获取异步的消息,各种异步操作可以用同样的方式处理

promise有三种状态 不受外界影响
pending 进行中
fulfilled 已成功
rejected 已失败

优点
在异步流程中 把执行代码和处理结果的代码清晰的分离了,将异步操作以同步的流程表达出来 避免了层层嵌套的回调函数

promise 对象提供统一接口 API 是的控制异步操作更容易 只有异步操作的结果 可以决定当前是哪一种状态 任何其他操作都无法改变

promise 任何时候都可以得到这个结果 一旦确定好最终状态就不会在改变
结果两种可能 去欸的那个好结果 状态就凝固了这个时候就称为
resolved(已定型)
从 pending 变为 fulfilled
从 pending 变为 rejected
如果改变已经发生了 再对promise 对象添加回调函数 也会立即得到这个结果 而事件 错过了再去监听就没了

实例 小demo
武林大战 天下第一 比武 但是这个比武的过程 其实老百姓也不关注,只会流传着 X 赢了 ,也根本不关注过程
赌王大战 大于 4点就赢了

 var test = (resolve, reject) => {
        var randomNum = Math.random() * 10
        console.log("随机是:", randomNum);
        // 比武什么时候结束 是不确定 ,用定时器模拟这个不确定
        setTimeout(() => {
            if (randomNum > 4) {
                resolve("周润发 赌王 赢了")
            } else {
                reject("周润发 问鼎赌王 失败")
            }
        }, 1000 * randomNum)
    }

    //  创建 promise 对象
    var p1 = new Promise(test)

    //  then方法返回的 是一个新的 promise对象,(不是原来那个 promis实例)
    //  因此 我们可以采用链式写法
    var p2 = p1.then(res => {
        console.log("成功:", res);
    })

    var p3 = p2.catch(err => {
        console.log("失败:", err);
    })

优化后的

new Promise((resolve, reject) => {
            var randomNum = Math.random() * 10
            console.log("随机是:", randomNum);
            // 比武什么时候结束 是不确定 ,用定时器模拟这个不确定
            setTimeout(() => {
                if (randomNum > 4) {
                    resolve("周润发 赌王 赢了")
                } else {
                    reject("周润发 问鼎赌王 失败")
                }
            }, 1000 * randomNum)
        }).then(res=>{
            console.log("成功:",res);
        }).catch(err=>{
            console.log("失败:",err);
        })

总结:
Promise 最大的好处 就是在异步流程中,把执行代码和处理结果的代码清晰的分离了

  • 将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
  • 此外,Promise 对象提供统一接口API,使得控制异步操作更容易
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值