找回密码
 立即注册

QQ登录

只需一步,快速开始

nutstore
金牌服务用户   /  发表于:2023-3-8 10:27  /   查看:744  /  回复:4
本帖最后由 nutstore 于 2023-3-8 10:31 编辑

这个问题并不是每个自定义异步公式都会复现,原文件以及原始开发环境涉及到数据敏感没法发上来,暂时也没有做出最小复现demo进行复现。

具体症状如下描述:
每次前端加载ssjson后,都会添加自定义公式,并在添加后到已有当前公式的单元格执行一次重算操作。在一个文件中大量自定义异步公式,其中有一个公式名为 WS_REF,功能是根据公式参数,发送一个请求拿到json,并根据第二个参数拿到json中的一个值。

在这个异步公式执行过程中,evaluateAsync 是正常执行的,但是setAsyncResult 设置值之后,并不会显示设置的值,依旧显示当前的 defaultValue,不过当我切换sheet或者拖动spread视图内部的滚动条之后会正常显示。

如果把 evaluateAsync 中的请求替换成一个没有延时的异步函数 即
async () => { return '测试数据' }
setAsyncResult 是可以直接正常显示出来的。

想问一下,引起这个问题的原因可能有哪些?


4 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-8 12:20:13
沙发
您好,
学习指南上有举例一个很典型的延时异步函数,可以看到并未出现您所述的问题。
https://demo.grapecity.com.cn/sp ... ync-function/purejs
从您描述来看,该异步函数涉及到后端发送请求获取json的过程,所以不排除是否与此有关。
还是需要您提供一个可复现的demo,这样才能根据代码进一步调研具体原因。
回复 使用道具 举报
nutstore
金牌服务用户   /  发表于:2023-3-8 14:28:29
板凳
Lynn.Dou 发表于 2023-3-8 12:20
您好,
学习指南上有举例一个很典型的延时异步函数,可以看到并未出现您所述的问题。
https://demo.grape ...

应该与请求无关的 如果不发送请求 而是设置一个setTimeout 也是显示不出来的
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-8 17:39:37
地板
那目前没有其他可能性判断了,您整理一个可复现demo,需要结合代码调研看看。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-20 13:49:39
5#
您好,请问您这个问题是否有得到解决,如果没有解决请按照楼上同事的要求提供可复现的demo,需要结合demo代码进行调查。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部