页面加载和云函数的返回异步的问题

来源:5-4 授权组件login

初学者之一

2020-01-20

老师,晚上好

我遇到了一个异步的问题。

data:{
	list:[]
}

//初始加载函数
  onLoad: function (options) {
    wx.showLoading({
      title: '加载中...',
      mask: true
    });
    let _list =[{}]
     app.globalData.categorires.forEach((el,idx )=> {
      _list[idx]={}
      _list[idx].category = el
       this.getCategoryGoodsList({start:0,categoryIdx:idx}).then(res=>{
        console.log(res)
        _list[idx].goodsList = res.result
      })
      _list[idx].id = idx
    });
    this.setData({
      list:_list,
      listCur:_list[0]
    })
    wx.hideLoading()
  },


  //获取每个分类的商品列表
  getCategoryGoodsList(e){
    return wx.cloud.callFunction({
      name:'goods',
      data:{
        start:e.start,
        count:10,
        category:e.categoryIdx,
        $url:'categoryGoodsList'
      }
    })
  }

页面加载和云函数的返回异步的问题。
页面加载后,list是没有数据的。
过几秒后,看appData里list会更新
这时候滑动一下页面,数据就会更新出来。

这种情况该怎么处理呢?

另外请问这云函数调用 返回速度也太慢了吧。就几个查询要好几秒。
数据量很小啊
图片描述

谢谢

写回答

1回答

谢成

2020-01-21

onLoad()就是在监听页面加载之后执行,所以先有页面再Ajax请求数据是没有问题的。


慢应该是慢在循环中调用云函数:

//img1.sycdn.imooc.com/szimg/5e266f4909cbae8a17421070.jpg

比如20条数据,就要调用20次云函数,这种效率不高。


根据业务逻辑,修改成只调用一次云函数试试。



0
1
初学者之一
嗯。老师,我知道onload是什么意思。 问题是setdata后,页面没有更新。 我想知道这种情况下,怎么去让小程序更新页面。 比如angular有一个ChangeDetectorRef.markForCheck 另外调用云函数慢不是因为循环的问题。
2020-01-22
共1条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1920 学习 · 2759 问题

查看课程