问题描述:
首次进入小程序,app.js onLaunch 会执行wx.login() ,success后根据返回值 后再次执行网站的ajax,
成功返回用户标识数据 调用同步 wx.setStorageSync 设置缓存。
经测试,这里会偶尔报错,报错就卡死页面了,后面的数据加载不进来,重新安装。(每次报错的概率是十分之一二左右)
现在有部分用户反映有这样的问题,寻求答案。
调用小程序提供的方法使用有误吗?
亲测bug可现(客户端ios最新版, 微信版本基础库也都是新版,以前貌似就存在这个问题)
求原因~~~~
function
retrySetStorageSync(key, data) {
let time = 0;
function
setData(sdata) {
if
(time < 3) {
time += 1;
try
{
wx.setStorageSync(key, sdata);
}
catch
(error) {
setData(sdata);
}
}
}
setData(data);
}
setStorageSync 错误重试3次
bugSetStorage();
function bugSetStorage(){
try{
wx.setStorageSync('bugSetStorage', "1");
}catch(e){
console.log("bug来了")
bugSetStorage();
}
};
console.log('设置token start' + token);
wx.setStorageSync('token', token);
console.log('设置token end');
临时 的解决方法,测了2次,还好。
求官方解决方案
可以添加一个重试次数限制。
在论坛里找到龙较瘦(官)7月中心的回复: setStorageSync有一定失败概率,建议重试或者使用setStorage
今天使用setStorage了,十几次也会出现一次在fail里设置失败的情况。
报错信息是:{errMsg:setstorage:fail set DB data fail }
报错了,其他页面依赖缓存,后面就挂掉了~~~~
请问怎么处理
还有,报错信息也不太看得懂。。。
onLaunch 调用微信登录,获取到值后,再执行ajax,在success里面后,设置缓存。