收藏
回答

如何让所有异步请求完成后再调用wx.hideLoading()?

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

  • 池在东门
    池在东门
    2023-12-21
    应该这样写
    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()
    }
    
    



    2023-12-21
    有用
    回复
  • 八九
    八九
    2023-06-01

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

    2023-06-01
    有用
    回复
  • 跨商通
    跨商通
    2023-05-31

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

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

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

    2023-05-31
    有用
    回复
  • showms
    showms
    2023-05-31

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

    2023-05-31
    有用
    回复
登录 后发表内容