dva 的model中的effect报错后就不再执行的问题

17 篇文章 0 订阅
13 篇文章 0 订阅

总结:dva 的model中的effect报错后就不再执行,需要对提前对报错进行处理或者预防报错!

// 获取接入参数详细配置
        * queryAccessTableVo({ payload }, { race, call, put, take, select }) {
            console.log('执行了')
            const res = yield call(queryAccessTableVo, payload)
            console.log('执行了2')
            if (res?.data) {
                let userId = yield select(({ user }) => user.id)
                let params: OfflineApplication.recognizeParams = {
                    createTime: new Date().getTime(),
                    creator: userId,
                    jobConf: JSON.stringify({ column: res?.data?.tableDesc?.columns || [] }),
                    ...payload
                }
                let recognizeRes = yield call(recognize, params);
                res.data.tableDesc.columns.forEach((item, index) => {

                  item.encrypt = recognizeRes?.data[index] || ''//这个地方有错误,recognizeRes?.data为null
                })
                console.log(res.data.tableDesc.columns, 'res')
                console.log(recognizeRes, '脱敏规则')
                yield put({ type: 'updataAccessTableVo', payload: res.data })
            }
        },

上面这个地方有错误,recognizeRes?.data为null,报错信息如下。奇怪的是竟然也会导致后面切换的时候这个model不会执行!我已开始以为是forEach中报错导致的阻塞,发现不是,后面经过测试,发现是Effect中报错会导致这个Effect后面无法在执行,所以对于Effect要考虑好处理报错的问题,redux-saga一般是用try catch处理报错的问题。
报错信息
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值