微信小程序wx.getStorageSync同步读缓存无法获取到数据的坑

写小程序经常碰到读缓存无法获取到数据问题,一直没头绪,以为是小程序本身的bug。
后来仔细读官方文档才发现自己被误导了,wx.getStorageSync同步读缓存 与 wx.getStorage异步读缓存写法有差异,而我在wx.getStorageSync使用了wx.getStorage的写法。

原因如下:
当时看官方文档,按照阅读习惯,我错误地理解这是wx.getStorageSync的两种使用方法,看漏了没有Sync。官方文档没仔细标明是两种读缓存的写法。让我一直以为同步和异步读缓存写法是一样的。
微信小程序wx.getStorageSync同步读缓存无法获取到数据的坑_第1张图片
同步和异步读缓存的差异:
在这里插入图片描述
同步读缓存传参是key
在这里插入图片描述
异步读缓存传参是对象

wx.getStorageSync的代码演示

错误的代码:(用了异步读缓存的写法)

    wx.getStorageSync({
      key: 'TimeTable_Skin',
      success: function(res) {
        console.log(res.data)
      },
    })
    // 输出了 undefined

正确的代码:

var StorageData = wx.getStorageSync("TimeTable_Skin")
console.log(StorageData)
// 输出了正确的数据

改掉实际开发中的坏习惯:

以前写完正确的异步读缓存wx.getStorage代码后
为了比较同步与异步读缓存的差异,经常这样干在语句后面直接加上Sync

wx.getStorage({					== 》   wx.getStorageSync({
  key: 'TimeTable_Skin',					key: 'TimeTable_Skin',
  success: function(res) {					success: function(res) {
    console.log(res.data)					  console.log(res.data)
  },										},
})										})

现在知道两种读缓存的写法不一致后,别再这样写了。

点个赞让我看看谁跟我掉进同一个坑了

你可能感兴趣的:(微信小程序)