数据异步加载速度 PK onLoad加载速度,当后者速度比前者快的时候,我们该怎么办

来源:

幸福一点点

2016-12-28

问题起源于【6-4 使用数据填充新闻详情页面】,先来张图,回忆一下,嘿嘿:

http://szimg.mukewang.com/5863b5560001d8e009680546.jpg

【确认?】this.data.postData = postData;这种同步方法,在前面的某个章节中老师特别提醒新版已经不支持了,找了半天忘记具体在哪里了,所以就不上图了,我为了确认我没记错特意的实验了一下,确实不支持了;在这里再次确认一下,我接下来问的问题是关于这块的!!!

在这节课最后几分钟,老师说过:(麻烦老师确认一下,看看学生理解的是否错误)

【我的理解:】

this.data.postData = postData; 属于 同步加载数据

this.setData({

        postData : postData

})

属于异步加载数据;

【问题】

异步加载数据,存在,数据还没有完全加载到 data{} 里面,onLoad就已经完成了,导致的后果就是页面显示不全;

而且,现在新版本又不支持同步加载数据,并且上面的现象在现实中发生的概率非常的大(自我感觉,因为实际的工作中后台给出的数据量是非常大的,所以在这里大胆的猜测这种情况发生的几率大)

当然,我们只加载第一屏的内容,这种情况发生的几率,非常非常的小,但是还是存在;所以,

【面对的情况就是】

  1. 同步加载数据不支持,只能选择异步加载数据

  2. 虽然我们可以用分页来降低这种情况的发生,但是还是会发生加载不全的现象

麻烦老师帮忙看一看,这种担心是否有必要

写回答

4回答

7七月

2016-12-28

this.data 是改变了初始化变量,这个操作是同步的。this.setData是立即更新绑定变量,也是同步的。

1
0

7七月

2016-12-28

不是。你理解稍微有点儿问题。this.data和 this.setData,没有同步和异步。我的意思是说,在onLoad里可以直接用this.data,但如果你在onLoad里又有一个异步的方法,在这个异步方法里,去this.data是无效的。当然新版本 改动了生命周期,this.data已经无效了,都必须使用setData

1
1
幸福一点点
多谢老师,还得多多练习体会才行,不然理解还是不够呀,嘿嘿
2016-12-29
共1条回复

7七月

2016-12-29

不客气,祝学习愉快

0
0

幸福一点点

提问者

2016-12-29

多谢老师,还得多多练习体会才行,不然理解还是不够呀,嘿嘿

0
0

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23866 学习 · 6899 问题

查看课程