收藏
回答

微信缓存setStorageSync getStorageSync获取数据不及时

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug setStorageSync getStorageSync 工具 7.0.3 2.6.4 2.5.0

- 当前 Bug 的表现(可附上截图


用户可以多平台登陆,登陆后登陆凭证token会发生改变,改变后我会缓存起来,但是获取缓存的时候经常会获取到之前的登陆凭证token,导致用户以为我还没登陆成功。登陆后到获取数据的时间最快为3秒 ,也就是说缓存写入3秒了,我获取的还是之前的缓存,这不是扯呢么 。之前使用异步Storage和app.js里面的全局变量也是一样的。希望可以给一个合适的解决方案。!!!不接受官方更新IDE建议 !!!


- 预期表现

- 复现路径

- 提供一个最简复现 Demo

//登陆时写入缓存

GoIndex() {

   var that = this;

   if (!that.PhoneRegular()) return;//验证手机号

   if (!that.PwdRegular(Pwdinp)) return;//验证密码

   Utils.CmAjax("homes/logins", {

     phone: Phones,

     pwd: Pwdinp

   }, function (res) {

     if (res.data.state == true) {

       app.globalData.UId = res.data.data.id;

       wx.setStorageSync("Id", res.data.data.id);

       wx.setStorageSync("token", res.data.data.token);

       wx.reLaunch({

         url: '../Inspection/Inspection',

       })

     } else {

       Utils.ErrorTex(res.data.msg, 2000);

     }

   }, "POST", '正在登录...')

 },



//获取数据时读取缓存中的数据

wx.request({

   header: {

     'content-Type': 'application/x-www-form-urlencoded',

     token: wx.getStorageSync('token')

   },

   url: "域名" + url,

   data: data,

   method: posttype,

   success: (res) => {


   },

   fail: (error) => {

     setTimeout(function() {

       wx.hideLoading();

       FailTex('服务器错误!', 3000);

     }, 1000);

   },

   complete: (er) => {

   }

 })




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

2 个回答

  • 娇华
    娇华
    04-03

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    04-03
    赞同
    回复
  • June
    June
    04-03

    在调完 setStorageSync 之后马上调 getStorageSync,这边看到是正常的表现,所以:


    1、请按照问题填写出现的终端类型和版本号,不然无法排查。

    2、请提供一下可以复现问题的代码片段,方便开发同学定位问题(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。只提供不完整的代码很难看出问题核心,处理的效率也低。

    3、如果本身确定是工具的 bug,不接受更新那就无解了。


    04-03
    赞同
    回复