【bug】 wx.setStorageSync 方法偶尔会报错
发布于 6 年前 作者 lsong 6729 次浏览 来自 问答

问题描述:

首次进入小程序,app.js   onLaunch 会执行wx.login() ,success后根据返回值 后再次执行网站的ajax,

成功返回用户标识数据 调用同步 wx.setStorageSync 设置缓存。

经测试,这里会偶尔报错,报错就卡死页面了,后面的数据加载不进来,重新安装。(每次报错的概率是十分之一二左右

现在有部分用户反映有这样的问题,寻求答案。

调用小程序提供的方法使用有误吗?

亲测bug可现(客户端ios最新版, 微信版本基础库也都是新版,以前貌似就存在这个问题)

求原因~~~~

5 回复

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次

在论坛里找到龙较瘦()7月中心的回复: setStorageSync有一定失败概率,建议重试或者使用setStorage

今天使用setStorage了,十几次也会出现一次在fail里设置失败的情况。

报错信息是:{errMsg:setstorage:fail set DB data fail }


报错了,其他页面依赖缓存,后面就挂掉了~~~~

请问怎么处理

还有,报错信息也不太看得懂。。。

                    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次,还好。

求官方解决方案

onLaunch 调用微信登录,获取到值后,再执行ajax,在success里面后,设置缓存。

回到顶部