那些年我卡死的微信小程序

今天使用uview封装的vuex写数据的时候,又卡死了一个可怜的小程序,记录一下吧,真是条条路上有大坑,一踩一个准啊!

上代码:

async matchStatus(code){
//传入一个状态码,匹配状态名,如传入10020300,返回“运输中”	。		
	if(code){
        //从本地存储vuex_status中查询该状态码
		let status = find(this.vuex_status, ['code', code]);
			if(status)
				return status.name
			else{
				//没查到则发查询请求并写入vuex
				const res = await this.$u.api.getStatus(code)
				if(res){
					if(!this.vuex_status[code]){
						try{
							this.$u.vuex('vuex_status.'+code,res)
						}catch(e){
							console.log('vuex_status重复写相同key值,可忽略。')
								//若有同时写操作会抛出错来,可不处理
						}
					}
					return res.name
				}
			}
		}
		return ''
	}

一段平平无奇的代码飘过~~

亮点来了,实现要求是将状态信息以状态码为key,状态信息为value存储在vuex_status中,这样列表展示时发一堆状态码异步查询请求,key相同就不会重复写入相同的值。

然后我将vuex_status初始化为一个空数组[ ]

一执行,小程序直接卡死。请求全pending在那儿,过不去了。

原因竟是因为:

status是个数字啊!

this.$u.vuex('vuex_status.'+code,res) 就相当于 vuex_status[1030200] = res

每回写一个序列号为上万的数组,可不得卡死。最后解决方法是将vuex_status初始化为空对象{}。

反正写到本地都是存的字符串,没差。

师父怼我:面试咋没问问你这个,意思是被我蠢到了。我是真没想到啊,还不是因为this.$u.vuex()不支持 [ ] 只能用 .  (小小声狡辩)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值