收藏
回答

如何解决微信小程序,在onLoad中通过接口获取卡片id,并保存数据,但onShow无法同时获取?

进入页面,在onLoad中通过请求接口,获取到卡片id,并setData保存到页面data数据中,但同一页面中另一个接口的参数依赖于卡片id,并需要频繁刷新,所以我想把接口写在onShow中,但进入页面,onShow中无法同时获取到对应的卡片id,请问这种情况有好的解决办法吗?

回答关注问题邀请回答
收藏

2 个回答

  • 跨商通
    跨商通
    2022-06-08
    onLoad:async function(){
      if(this.theId){}else this.theId = await this.getId()//不要这一步也可以。
    },
    onShow:async function(){
      if(this.theId){}else this.theId = await this.getId()
    },
    getId:async function(){
      let thdId = await ...
      return theId
    },
    


    2022-06-08
    有用 1
    回复
  • 茜茜又困了🐽
    茜茜又困了🐽
    2022-06-08
    1. 在onShow里使用setTimeout异步处理
    2. onload中setData时在接口的回调中调用另一个接口,onshow中逻辑不变
    2022-06-08
    有用 1
    回复 4
    • F
      F
      发表于移动端
      2022-06-08
      请问,如果用setTimeout,如果用户网络比较差,还是会出现这个问题吗?
      2022-06-08
      回复
    • 茜茜又困了🐽
      茜茜又困了🐽
      2022-06-08回复F
      会的,我有点不理解你所说的“需要频繁刷新”指的是什么?
      2022-06-08
      回复
    • F
      F
      2022-06-08
      页面中有个接口是通过卡片id去获取方案列表的,点击方案列表能跳转对应方案详情,方案详情可以点赞,就是用户点赞后,回到卡片页面,需要刷新对应方案的点赞样式和点赞数量,因为从方案详情页回卡片页面,是不触发onLoad的嘛,所以我就把方法写到onShow里了。
      2022-06-08
      回复
    • 茜茜又困了🐽
      茜茜又困了🐽
      2022-06-08回复F
      嗯嗯,那第一种就不适用了,你也可以参考楼下async的写法
      2022-06-08
      回复
登录 后发表内容