小程序wx.setStorageSync后,在用getStorageSync获取数据有时会获取不到

背景:
在购物车页面拿不到店铺编号
在这里插入图片描述
问题:
是wx.getStorageSync 没有取到值导致的。

目前实现:
是获取后存下来wx.setStorageSync("merchantNo", userStoreInfo.data.merchantNo)
每次用的时候都是直接取的merchantNo: wx.getStorageSync("merchantNo")

解决:
1、直接写成异步获取,获取不到值的时候重新去后台取一次;2、在往缓存里放的时候同时保存到全局变量里,取值从全局或缓存里取,如果这个时候还拿不到数据就再异步请求重新赋值。

async goAgain(e) {
    
    
    let params_ = {
    
    
      orderNo: e.currentTarget.dataset.orderNo,
      // merchantNo: wx.getStorageSync("merchantNo")
      merchantNo: await this.getMerchantNo()
    }
    console.log('params_', params_)
    oneMoreOrder(params_).then(res => {
    
    
      if (res.code == 0) {
    
    
        NCart.initNum()
        wx.switchTab({
    
    
          url: "/pages/shopping/cart"
        });
      } else {
    
    
        wx.showToast({
    
    
          title: res.msg,
          duration: 2000,
          icon: "none"
        })
      }
    })
  },
  async getMerchantNo () {
    
    
    try {
    
    
      let value = wx.getStorageSync('merchantNo')
      if (value) {
    
    
        return value
      }
      let userStoreInfo = await getUserMerchant()
      return userStoreInfo.data.merchantNo
    } catch (e) {
    
    
      console.log('eeee', e)
    }
  },

参考文章:
小程序wx.setStorageSync后,在用getStorageSync获取数据有时会获取不到
使用wx.getStorageSync取不到值为什么 ?
微信小程序-设置本地缓存和读取(同步,异步)

猜你喜欢

转载自blog.csdn.net/guairena/article/details/125916556