在做一个订单展示时遇到的情况,只有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)
})
你可以用Promise.all把循环出来逻辑在封装一下
要在then里setData
你要往data内写入数据不能直接用this.data.waitPayOrder.push(element) 你在JS里处理完数组再用this.setData一起赋值