我好饿啊啊啊啊啊啊啊啊 2021-03-23 00:25 采纳率: 100%
浏览 536
已采纳

微信小程序——在js中使用this.data.xxxx获取数据有延迟

使用云函数获取数据库信息并写入foodList中,在onLoad生命周期中使用this.data获取数值是出现了问题,如下图

明明this.data中有foodList的数据,但是this.data.foodList获取不到

之后加了点延迟又获取到了数据,这是为什么呢?为什么获取数据会有延迟呢,明明同一时间this.data中有数据,但是就是获取不到,有没有大佬给小白解疑啊QAQ

  • 写回答

2条回答 默认 最新

  • 天际的海浪 2021-03-23 03:41
    关注


    foodList中的数据应该是通过ajax异步方式加载的,onLoad生命周期不会等待异步加载这一过程。
    onLoad生命周期会在ajax异步加载数据完成之前执行,这个时间foodList中还没有数据。

    为什么明明this.data中有foodList的数据呢?
    那是因为console.log()输出对象或数组时是在控制台显示一个对象或数组的引用。

    在用console.log()输出数组或对象时,对象(数组)的属性是折叠不显示的。
    如果你在console.log()输出之后改变了对象(数组)的属性,当你点击三角展开属性时,会重新读取对象(数组)当前的属性,也就是显示出来的是你点击三角展开时的属性,而不是执行console.log()时的属性。

    就是说你在console.log()输出this.data之后,ajax异步加载数据才完成对foodList添加数据,这之后你点击三角展开this.data的属性,会重新读取foodList当前的属性。
     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测