找回密码
 立即注册

QQ登录

只需一步,快速开始

小胖子

初级会员

25

主题

81

帖子

284

积分

初级会员

积分
284
小胖子
初级会员   /  发表于:2022-2-9 17:27  /   查看:2209  /  回复:3
1金币
spread.suspendPaint();
spread.suspendCalcService(false);
//循环设置公式代码...
spread.resumeCalcService(true);
spread.resumePaint();
我知道这种用法,加上以后setFormula就成异步计算了,我测试没加suspendCalcService同步计算特别慢,我有8万多个单元格,相当于8万多个公式,我自己测试,同步情况下运算到最后一个公式完用了半小时多呢,,加上成了异步了,(问题一:)但是我怎么知道异步完成的时间呢?因为,我必须等着全部公式运算完,我去立马操作保存运算出来的钱(因为有组合公式,一个单元格可能有多个单一公式)给数据库,或者怎么变相的实现这个这2个操作呢?(问题二)因为我没测试异步的时间,异步跑8万个公式,能比同步时间少吗?

最佳答案

查看完整内容

首先纠正一下 上述代码加上后也不是异步计算,而是将讲公式计算挂起,避免无用的中间计算过程。 如果必须等着全部公式运算完,那么就在spread.resumePaint();代码之后直接获取计算的结果就行了、

3 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-9 17:27:44
来自 2#
首先纠正一下
上述代码加上后也不是异步计算,而是将讲公式计算挂起,避免无用的中间计算过程。
如果必须等着全部公式运算完,那么就在spread.resumePaint();代码之后直接获取计算的结果就行了、
回复 使用道具 举报
小胖子
初级会员   /  发表于:2022-2-9 18:06:10
3#
Clark.Pan 发表于 2022-2-9 17:58
首先纠正一下
上述代码加上后也不是异步计算,而是将讲公式计算挂起,避免无用的中间计算过程。
如果必须 ...

spread.suspendPaint();
spread.suspendCalcService(false);
//循环设置公式代码...
spread.resumeCalcService(true);
spread.resumePaint();
昂,您的意思是说,我上面的4句话,走到spread.resumePaint();后面,那就证明全部公式计算完了?,比如8万个公式,spread.resumePaint();后面,我直接 spread.toJSON();拿到的就是全部计算完后的结果了吗?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-10 08:18:53
4#
是的,或者getValue指定的单元格也可以拿到指定单元格公式的计算的结果

评分

参与人数 1满意度 +5 收起 理由
小胖子 + 5

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部