for循环异步请求导致顺序不一致-for循环异步请求导致顺序不一致

lxf2023-03-23 12:29:01

前言:

11小时前小编发现微信小程序用户:【AdminJS】提出了一个关于“关于for循环异步调用云函数失败?”的问题,在问题中开发者matrix对该问题做了如下阐述:

问题类型:

  • 其他开发相关的问题:

问题描述:

本人在开发的过程中,创建了一个异步函数来循环调用云函数。云函数是单次查询数据库中的一条数据。云函数的调用是异步的,所用了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)

        }

    },

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

注:以上是微信小程序开发者:"matrix"对于本问题的一些阐述,这里做一个引用,我们将实时关注微信小程序助手对该问题提出的解决方案

解决方案:

【AdminJS】微信小程序技术运营专员对用户matrix提出的关于for循环异步调用云函数失败?给予如下回复

能做循环里写异步的好像就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++
  }
},

结语:

不同于腾讯和阿里封闭式的小程序体系,微信官方智能小程序走的是开放路线。截止目前,他们已经陆续开放了50万行智能小程序代码。这意味着其他平台的小程序只需简单修改几行代码,就可以迁入智能小程序,实现一次开发多端可运行。

如果您也在使用微信小程序,请关注Adminjs.cn,如果您有关于微信小程序的使用问题请关注Adminjs.cn,如果您要找百度小程序模板、微信小程序模板请关注小程序模板网或者去微信开放社区找官方人员给予解决,相信微信官方在小程序上的发力会是一个里程碑!