解决由于方法异步导致数据丢失问题

export default {
  name: "",
  data() {
    return{
      ticketId: '', // 订单编号
    }
  },
  mounted() {
    this.orderInfo()
    this.createQRCode()
  },
  methods: {
    //  显示订单信息——订单编号
    orderInfo() {
          let params = {
          xxx: this.xxxx
        }
          post('xxx', params).then((res) => {
          console.log(res.data)
          // 请求成功
          if (res.data.code === 20000) {
               this.ticketId = res.data.data.ticket.ticketId
               console.log(this.ticketId)
           }
        })
      })
    },
   createQRCode() {
          console.log(this.ticketId) // undefined
      })
    }
  }
}

分析:

orderInfo() 和 createQRCode()方法均为异步,即在methods中定义方法、在mounted中加载,在进入页面的时候两个方法都是直接调用,程序并不能判断两个方法谁先调用谁先发生。因此,从orderInfo()中通过接口获取的参数,无法在createQRCode()方法中再次获取。

在设定的逻辑流程中,希望orderInfo()方法先执行,在orderInfo()方法中获取的参数ticketId,可以专递給createQRCode()方法,供其使用。并且,两个方法均在页面打开时调用。

解决方法:

为实现orderInfo()先进行,完毕后,createQRCode()方法再加载,可以参考使用await/async来处理异步问题

代码实现:

orderInfo() {
  return new Promise((resolve, reject) => {
    let params = { xxx: this.xxxx }
    post('xxx', params).then((res) => {
      resolve(this.data.data.ticket)
    })
  })
},
async createQRCode() {
  let ticketId = await this.orderInfo()
// console.log(ticketId )
}

至此,在createQRCode()方法中成功获得了ticketId参数!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!如果在使用 Vuex 存储用户数据时遇到丢失问题,可能有几个可能的原因和解决方法。 1. 刷新页面导致数据丢失:Vuex 存储的数据是存在内存中的,当页面刷新时,数据会重置为初始状态。为了解决这个问题,你可以考虑将用户数据保存在本地存储(如 localStorage)中,在页面刷新后再从本地存储中恢复数据到 Vuex 中。 2. 未正确更新状态:确保在修改用户数据时,通过 Vuex 的 mutation 进行更新。直接在组件中修改状态可能会导致数据丢失。使用 mutation 可以确保状态的变更被追踪,以便在需要时进行持久化。 3. 组件间通信问题:如果多个组件共享用户数据,确保它们都通过 Vuex 进行读取和修改,这样可以保证数据的一致性。如果某个组件没有正确使用 Vuex 进行通信,可能会导致数据不同步或丢失。 4. 异步操作问题:如果在异步操作中修改了用户数据,需要使用 Vuex 的 action 进行处理。异步操作可能会导致数据丢失或顺序错乱。通过使用 action,可以确保在异步操作完成后再修改状态,避免数据丢失问题。 5. 状态持久化插件:考虑使用 Vuex 的状态持久化插件,如 vuex-persistedstate,它可以将 Vuex 状态自动保存到本地存储中,以便在页面刷新后恢复数据。 希望以上解决方法能够帮助你解决 Vuex 存储用户数据丢失问题!如果还有其他疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值