收藏
回答

关于for循环异步调用云函数失败?

本人在开发的过程中,创建了一个异步函数来循环调用云函数。云函数是单次查询数据库中的一条数据。云函数的调用是异步的,所用了async和await异步来循环调用云函数查询数据,但显示失败,求大佬指点!!

相关代码如下:


此处 async cartfunciton(){

        let i

        for(i of app.globalData.cart_list){

                console.log( i.cart_item_id)

  此处              await wx.cloud.callFunction({

                name:"get_doc_data",

                data:{

                    id:i.cart_item_id

                }

            })

            .then(res=>{

                   this.setData({

                   cart_database_list:this.data.cart_database_list.push(res.result.data)

               })

               console.log("push_success")

            })

            .catch(err=>{

                console.log("fail")

            })

            console.log(this.data.cart_database_list)

        }

    },

获取数据不成功,返回为空

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

1 个回答

  • 藻雪
    藻雪
    2022-03-28

    能做循环里写异步的好像就while循环吧,仅供参考,我的是可行的

    //获取模块数组
    async getModuleList(moduleData = {}, PageSize = 5) {
      let {ModuleSeq, listName, url, ModuleId, ManagerSeq} = moduleData
      let params = {ManagerSeq, ModuleSeq, CurrentIndex: 0, PageSize}
      let [err, data] = await this.$Axios(url, params)
      if (data) {
        this[listName] = data[listName]
      }
    },
    //获取模块对应数组(循环执行)
    async getCirculation() {
      let length = this.moduleList.length, i = 0, ManagerSeq = this.ManagerSeq;
      while (i < length) {
        let module = moduleListUrl.find(item => item.ModuleId === this.moduleList[i].ModuleId)
        let moduleData = {...module, index: i, ModuleSeq: this.moduleList[i].ModuleSeq, ManagerSeq}
        await this.getModuleList(moduleData)
        i++
      }
    },
    
    2022-03-28
    有用
    回复
登录 后发表内容