如何让所有异步请求完成后再调用wx.hideLoading()?
发布于 3 年前 作者 zhangqiang 2608 次浏览 来自 官方Issues

需求,用户点击按钮后查询数据,但是数据是异步请求,查询数目也较多,等待时间较长,所以想要在查询时间通过 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()
  })
4 回复

1、如果你的多个异步是promise.then一层一层执行,那么,你放在最后一层里wx.hideLoading;

2、如果你是多个异步同时执行,建议用Promise.all([promiseArray]).then(res=>{wx.hideLoading})

3、省事的话,就全部改成async/await

你这代码写的,有点没看懂

wx.hideLoading()放在逻辑里面处理

wx.showLoading不是应该放在查表之前才有意义吗

回到顶部