找回密码
 立即注册

QQ登录

只需一步,快速开始

ld2myt

初级会员

14

主题

41

帖子

342

积分

初级会员

积分
342

[已处理] 关于回调函数

ld2myt
初级会员   /  发表于:2018-12-10 14:49  /   查看:3563  /  回复:6
请问是否有 渲染结束以后的回调函数呢 ?

比如我想知道sheet.resumePaint();之后表格何时能重画完毕。 我需要在绘画结束后添加一些东西

6 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-10 17:10:16
沙发
您好,sheet.resumePaint()方法是同步执行的,渲染完毕前会阻塞当前线程,

您只需要把您的代码逻辑写在这句代码之后即可。
回复 使用道具 举报
ld2myt
初级会员   /  发表于:2018-12-10 17:56:10
板凳
KevinChen 发表于 2018-12-10 17:10
您好,sheet.resumePaint()方法是同步执行的,渲染完毕前会阻塞当前线程,

您只需要把您的代码逻辑写在 ...

其他的都可以 当单元格有一些复杂的formula属性的时候  Excel重绘结束时间和sheet.resumePaint() 有明显的时间差
回复 使用道具 举报
ld2myt
初级会员   /  发表于:2018-12-11 11:05:37
地板
KevinChen 发表于 2018-12-10 17:10
您好,sheet.resumePaint()方法是同步执行的,渲染完毕前会阻塞当前线程,

您只需要把您的代码逻辑写在 ...

好像是针对=today()这一类的公式方法   渲染会很慢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 11:07:40
5#
ld2myt 发表于 2018-12-10 17:56
其他的都可以 当单元格有一些复杂的formula属性的时候  Excel重绘结束时间和sheet.resumePaint() 有明显 ...

您好,formula的运算与sheet的绘制,不是同一条逻辑线,

也就是说当挂起绘制时,formula确实会继续进行实时计算。

推荐您使用suspendCalcService 与 resumeCalcService 来挂起和恢复formula的计算。

具体用法参考API:

http://help.grapecity.com/spread ... endCalcService.html

http://help.grapecity.com/spread ... umeCalcService.html
回复 使用道具 举报
ld2myt
初级会员   /  发表于:2018-12-13 11:21:39
6#
KevinChen 发表于 2018-12-11 11:07
您好,formula的运算与sheet的绘制,不是同一条逻辑线,

也就是说当挂起绘制时,formula确实会继续进 ...

针对于渲染公式today()这一类的
使用suspendCalcService 与 resumeCalcService 来挂起和恢复formula的计算。
平均单元格的渲染时间是8.4毫秒左右
suspendPaint 和 resumePaint来挂起和恢复
平均单元格的渲染时间是3.8毫秒左右
这样算 如果有2000条数据的话 下面的方法要比上面的方法节省了9秒多 。

另外两种挂起的方法都不可以对Excel进行滑动查看之类的操作  请问是否有办法可以不影响页面操作的情况下进行  计算数据呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-13 12:50:27
7#
您好,suspendPaint只是挂起了绘制操作,并没有挂起计算引擎,

因此您仅仅执行suspendPaint时,公式计算并没有挂起,

SpreadJS为了提升页面展示的性能,使用了lazyload机制,

也就是说当您滑动查看操作时一定会触发paint进行实时绘制的,

执行了suspendPaint后,的确无法再执行包括滑动查看在内所有需要变更表格显示的效果,

这两对方法是互不关联的,您可以只挂起计算,也可以只挂起绘制,

这个您可以根据您的业务逻辑来安排。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部