收藏
回答

循环请求数据库中的异步问题,如何解决?

data:{
       DB_list:[{database_name:'secondary-quality'},
      {database_name:'secondary-education'},
      {database_name:'senior-language'}]
     },    


//对列表中的total进行更新
    var p1=new Promise((resolve,reject)=>{
      for(let i=0;i<this.data.DB_list.length;i++)
      {
        db.collection(this.data.DB_list[i].database_name).count({
          success:res=>{
            this.setData({
              ['DB_list['+i+'].total']:res.total
            })
            console.log(i)
          }
        })
      }
      resolve()
    })



    //将DB_list存入缓存
    p1.then(res=>{
      wx.setStorageSync('DB_list'this.data.DB_list)
      console.log(wx.getStorageSync('DB_list'))
    })


AppData中的total已经更新了

可缓存中的数据和原来一样(也就是没有total字段),应该是一个异步问题。





回答关注问题邀请回答
收藏

4 个回答

  • 跨商通
    跨商通
    2022-08-19

    promise.all

    2022-08-19
    有用 1
    回复
  • 风华漫舞
    风华漫舞
    2022-08-19

    可参考:https://blog.csdn.net/nvidiacuda/article/details/96429347

    注意每次循环结束都要resolve

    2022-08-19
    有用 1
    回复
  • Frank
    Frank
    2022-08-19

    这个用promise.all吧

    2022-08-19
    有用 1
    回复
  • Mr.Zhao
    Mr.Zhao
    2022-08-19

    async await promise.all 百度学学 异步问题年年有人问,高频问题,不学不行

    2022-08-19
    有用 1
    回复
登录 后发表内容