小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 当前 Bug 的表现(可附上截图)
小程序setData很慢,从setData前到setData回调完成,代码流程计算时间如下图。
每次下拉请求回来的数据是10条,数据格式如下:
真机实测,数据打印如下:
图一9秒:
图二高达53秒:
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
最新的代码片段,请大神帮忙测试看下~~
https://developers.weixin.qq.com/s/WUvoHPmP764T
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#pageprototypesetdataobject-data-function-callback
callback 是 data改变后 页面重新渲染 完毕后 的回调;
考虑是否你渲染页面花费时间较长。
另外注意下面的第三点,看你只是置了一个list的json数据,应该没有很大吧
直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
仅支持设置可 JSON 化的数据。
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。
undefined
你说的这个,如果不setData的话,前端的UI的界面不会更新数据。所以必须setData才行。
这些都是在官方的文档中找到的、
我猜测引起的原因可能是 你setData之后,页面更新,然后执行的回调。
你这个页面更新如果用个几十秒 回调自然就要延迟了。
1.回调的部分,只是数据加载的动画函数。我试过把动画关了,还是一样的。
2.setData前的时间戳与setData后的时间戳,不就是应该这么计算吗?如果这两个时间戳差值较大,那就是setData的问题咯。
两个时间戳 中间有个数据改变-》引起视图渲染的时间。
比如你setData 设置了 userList、 page、 page_total; 这3个数据绑定了页面的某些组件什么的吧
改变了这3个值 这些组件要重新渲染 这个需要时间。
(ps:不过得渲染多大的数据才会耗时达到秒 甚至 几十秒的程度呢? 我只是提供一个思路,不是很确定引起你问题的原因,你可以测试一下是不是渲染引起的)
刚看了一下你的userList 里面有个属性是 pickurl1, 猜想是否是因为你的页面有图片的渲染而引起网络请求耗时较大,如果你的页面有类似下方的代码,试着注释掉测测:
<view wx:for="userList">
<text>姓名:{{item.nickname}}</text>
<image src="{{item.pickurl1}}" />
</view>
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
最新的代码片段,请大神帮忙测试看下~~
https://developers.weixin.qq.com/s/WUvoHPmP764T
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#pageprototypesetdataobject-data-function-callback
参数说明
callback 是 data改变后 页面重新渲染 完毕后 的回调;
考虑是否你渲染页面花费时间较长。
另外注意下面的第三点,看你只是置了一个list的json数据,应该没有很大吧
直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
仅支持设置可 JSON 化的数据。
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
请不要把 data 中任何一项的 value 设为
undefined
,否则这一项将不被设置并可能遗留一些潜在问题。直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
你说的这个,如果不setData的话,前端的UI的界面不会更新数据。所以必须setData才行。
这些都是在官方的文档中找到的、
我猜测引起的原因可能是 你setData之后,页面更新,然后执行的回调。
你这个页面更新如果用个几十秒 回调自然就要延迟了。
1.回调的部分,只是数据加载的动画函数。我试过把动画关了,还是一样的。
2.setData前的时间戳与setData后的时间戳,不就是应该这么计算吗?如果这两个时间戳差值较大,那就是setData的问题咯。
两个时间戳 中间有个数据改变-》引起视图渲染的时间。
比如你setData 设置了 userList、 page、 page_total; 这3个数据绑定了页面的某些组件什么的吧
改变了这3个值 这些组件要重新渲染 这个需要时间。
(ps:不过得渲染多大的数据才会耗时达到秒 甚至 几十秒的程度呢? 我只是提供一个思路,不是很确定引起你问题的原因,你可以测试一下是不是渲染引起的)
刚看了一下你的userList 里面有个属性是 pickurl1, 猜想是否是因为你的页面有图片的渲染而引起网络请求耗时较大,如果你的页面有类似下方的代码,试着注释掉测测:
<view wx:for="userList">
<text>姓名:{{item.nickname}}</text>
<image src="{{item.pickurl1}}" />
</view>