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

小程序 文章 2022-03-10 15:40 0 全屏看文

小程序onLoad异步问题,data数据设置成功缺不能在页面上显示?The applet onLoad asynchronous problem, the data data is successfully set and can not be displayed on the page?

小程序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)    })

在做一个订单展示时遇到的情况,只有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)    })

回答:

ꪶäꪗღꪖꪸꪀ:

杨宁:也不行
ꪶäꪗღꪖꪸꪀ:不能都命名res
微喵网络:

要在then里setData

杨宁:then在循环里面  在里面设置不是走好几遍吗
Mr.Zhao:

then是异步的,if先执行后执行的then

杨宁:then不是同步的吗
杨宁:而且if判断的时候是有值的
Mr.Zhao:异步的 有值是有值,对不对是另一回事
Mr.Zhao:这俩段不是同步的
杨宁:那success我测试过也不是同步的
杨宁:你的意思是让我把if写进then里面吗
Mr.Zhao:这俩段又是异步的
拾忆:
你要往data内写入数据不能直接用this.data.waitPayOrder.push(element)你在JS里处理完数组再用this.setData一起赋值
杨宁:好的,我试一下
杨宁:不行

-EOF-