需求,用户点击按钮后查询数据,但是数据是异步请求,查询数目也较多,等待时间较长,所以想要在查询时间通过 wx.showLoading()提示用户,等完成后在通过wx.hideLoading()来关闭窗口,但是因为是异步,所以很多情况是已经wx.hideLoading(),但数据还没加载完成。请问各位大佬如何解决。
db.collection('xxx').orderBy('aa','desc').skip(page).limit(rows).get()
then(res => {
wx.showLoading({
title: '查询中...',
mask:true
})
......//数据处理
wx.hideLoading()
})
应该这样写 try{ wx.showLoading({title: '查询中...', mask:true}) db.collection('xxx').orderBy('aa','desc') .skip(page).limit(rows).get() .then(res => { ......//数据处理 wx.hideLoading() }) }catch(e){ console.error(e) wx.hideLoading() }
wx.hideLoading()放在逻辑里面处理
1、如果你的多个异步是promise.then一层一层执行,那么,你放在最后一层里wx.hideLoading;
2、如果你是多个异步同时执行,建议用Promise.all([promiseArray]).then(res=>{wx.hideLoading})
3、省事的话,就全部改成async/await
wx.showLoading不是应该放在查表之前才有意义吗