找回密码
 立即注册

QQ登录

只需一步,快速开始

test11111111111

注册会员

12

主题

35

帖子

103

积分

注册会员

积分
103
test11111111111
注册会员   /  发表于:2022-3-3 20:10  /   查看:2312  /  回复:5
1金币
异步函数相加等于#VALUE!,该怎么办

features_calculation_async-function_JavaScript (1).zip

2.48 KB, 下载次数: 74

features_calculation_async-function_JavaScript.zip

2.53 KB, 下载次数: 74

最佳答案

查看完整内容

针对这种场景,两个方法: 1、加setTimeout;2、sheet.recalcAll();重算一遍

5 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-3-3 20:10:48
来自 6#
test11111111111 发表于 2022-3-5 08:06
不是异步函数写同步逻辑,这个异步函数是发post请求数据的。为避免第二次需要同样数据时减少不必要的请求 ...

针对这种场景,两个方法:
1、加setTimeout;2、sheet.recalcAll();重算一遍
image.png292395323.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-3-4 10:18:46
2#
如果evaluateAsync里面没有异步逻辑,需要调用sheet.recalcAll();重算
image.png132209166.png
回复 使用道具 举报
test11111111111
注册会员   /  发表于:2022-3-4 15:46:24
3#
Derrick.Jiao 发表于 2022-3-4 10:18
如果evaluateAsync里面没有异步逻辑,需要调用sheet.recalcAll();重算

这不合适吧,我在单元格上输入=ASUM()+ASUM().就把整个sheet重新计算一下?sheet上的公式有点多啊.还有其他解决办法吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-3-4 17:06:47
4#
test11111111111 发表于 2022-3-4 15:46
这不合适吧,我在单元格上输入=ASUM()+ASUM().就把整个sheet重新计算一下?sheet上的公式有点多啊.还有其他 ...

那请问你为什么什么要在异步函数里面写同步的逻辑呢?如果你要写同步逻辑的自定义函数,那么直接用自定义函数即可,也不需要重算。
https://demo.grapecity.com.cn/sp ... om-functions/purejs

如果想要用异步函数,请在evaluateAsync执行异步操作,这样也是不需要重算。
回复 使用道具 举报
test11111111111
注册会员   /  发表于:2022-3-5 08:06:12
5#
Derrick.Jiao 发表于 2022-3-4 17:06
那请问你为什么什么要在异步函数里面写同步的逻辑呢?如果你要写同步逻辑的自定义函数,那么直接用自定义 ...

不是异步函数写同步逻辑,这个异步函数是发post请求数据的。为避免第二次需要同样数据时减少不必要的请求,直接使用的第一次请求后缓存起来的数,相当于直接设置异步函数的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部