收藏
回答

小程序onLoad异步问题,data数据设置成功缺不能在页面上显示?

在做一个订单展示时遇到的情况,只有allOrderS里面的数据在微信wxml里面显示了,想问一下什么原因,怎么解决,push是一个异步函数吗?

      const _ = db.command
    db.collection('order').where({
      state:_.lt(5)
    }).get().then(res=>{
      res.data.forEach(element => {
        db.collection(element.dbname).doc(element.goods_id).get().then(res=>{
          element.f_img_url = res.data.f_img_url
        })
        if(element.state==0){
          this.data.waitPayOrder.push(element);
        }else if(element.state==1){
          this.data.waitSentOrder.push(element);
        }else if(element.state==2){
          this.data.waitReceivedOrder.push(element);
        }else if(element.state==3){
          this.data.completeOrder.push(element);
        }
      });
      this.setData({
        allOrderS:res.data
      })
      
      console.log(this.data)
    })
回答关注问题邀请回答
收藏

4 个回答

  • 那一抹笑😃 穿透阳光
    那一抹笑😃 穿透阳光
    2022-03-11

    你可以用Promise.all把循环出来逻辑在封装一下

    2022-03-11
    有用
    回复 2
    • YN
      YN
      2022-03-11
      嗯嗯,我把函数重新封装了一下,现在可以了
      2022-03-11
      回复
    • GM。
      GM。
      2022-07-01回复YN
      你好,可以参考下代码吗
      2022-07-01
      回复
  • xac
    xac
    2022-03-10

    2022-03-10
    有用
    回复 2
    • YN
      YN
      2022-03-10
      也不行
      2022-03-10
      回复
    • xac
      xac
      2022-03-10
      不能都命名res
      2022-03-10
      回复
  • 微喵网络
    微喵网络
    2022-03-10

    要在then里setData

    2022-03-10
    有用
    回复 1
    • YN
      YN
      2022-03-10
      then在循环里面  在里面设置不是走好几遍吗
      2022-03-10
      回复
  • 拾忆
    拾忆
    2022-03-10
    你要往data内写入数据不能直接用this.data.waitPayOrder.push(element)
    你在JS里处理完数组再用this.setData一起赋值
    
    2022-03-10
    有用
    回复 2
    • YN
      YN
      发表于移动端
      2022-03-10
      好的,我试一下
      2022-03-10
      回复
    • YN
      YN
      2022-03-10
      不行
      2022-03-10
      回复
登录 后发表内容