微信缓存setStorageSync getStorageSync获取数据不及时
发布于 5 年前 作者 wchang 12078 次浏览 来自 问答
  • 当前 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) => {

   }

 })

2 回复

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

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

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

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

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

回到顶部