收藏
回答

【bug】 wx.setStorageSync 方法偶尔会报错

问题模块
API和组件




问题描述:

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

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


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


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


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


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


求原因~~~~

最后一次编辑于  2017-07-24  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

6 个回答

  • 若水
    若水
    2018-09-12

    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次

    2018-09-12
    赞同 11
    回复
  • LHN
    LHN
    2017-07-24

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

    2017-07-24
    赞同
    回复
  • LHN
    LHN
    2017-07-24

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

    2017-07-24
    赞同
    回复
  • LHN
    LHN
    2017-07-25

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


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

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


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


    请问怎么处理

    2017-07-25
    赞同
    回复
  • LHN
    LHN
    2017-07-25

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

    求官方解决方案

    2017-07-25
    赞同
    回复 1
    • 若水
      若水
      2018-09-12

      可以添加一个重试次数限制。

      2018-09-12
      赞同
      回复