vuex中组合action的使用

组合多个action,处理更加复杂的异步流程。

业务逻辑场景:存在2个action,actionA和actionB,先执行完actionA才能执行actionB。

actions:{
    actionA({commit}){
        return new Promise((reslove,reject)=>{
            commit('someMutationA')
            reslove()
        })
    }
}复制代码

第一种,在组件里派发action

this.$store.dispatch('actionA').then(()=>{
    // ...派发其他的action或者写其他的逻辑
})复制代码

第二种,在actions里派发另一个action

actions:{
    actionB({dispatch, commit}){
        return dispatch('actionA').then(()=>{
            commit('someOtherMutation')
        })
    }
}复制代码

第三种,使用async/await的写法

actions:{
    async actionA({commit}){
        commit('someMutationA', await someMutationA())
    },
    async actionB({dispatch,commit}){
        await dispatch('actionA') // 等待actionA完成
        commit('someMutationB', await someMutationB)
    }
}复制代码

问题:入职新公司,看他们的项目中使用了大量的复杂action,大概有几百个,但是都没有commit方法,仅仅只是使用这个架构。每一个action处理之前都派发了另一个发送请求和路由拦截的action。看懵了,不知道他们以前为什么这么写。感觉是把API的东西放在了store文件夹下的action里面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值