找回密码
 立即注册

QQ登录

只需一步,快速开始

TY呀TY

中级会员

72

主题

193

帖子

647

积分

中级会员

积分
647
TY呀TY
中级会员   /  发表于:2023-6-3 17:18  /   查看:1543  /  回复:4
image.png20393065.png image.png582434386.png 如果我不使用计算服务,就不会出现这个问题, 这个要怎么解决呢

demo.zip

1.27 KB, 下载次数: 219

4 个回复

倒序浏览
WilliamChang
葡萄城公司职员   /  发表于:2023-6-5 12:21:46
沙发
你好,看到你用了异步公式,异步公式的setAsyncResult一定要在evaluateAsync里异步执行,否则会清除掉内部标记。所以改成下面应该可以正确执行
  1. let CrossWorkbookFormula = function () {};
  2.         CrossWorkbookFormula.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction("CROSSWORKBOOK", 3, 3,
  3.         {
  4.             description: "跨表格取数公式",
  5.             parameters: [{
  6.                 name: "workbookName",
  7.                 repeatable: false,
  8.                 optional: false
  9.             },
  10.             {
  11.                 name: "sheetName",
  12.                 repeatable: false,
  13.                 optional: false
  14.             },
  15.             {
  16.                 name: "range",
  17.                 repeatable: false,
  18.                 optional: false
  19.             }]
  20.         });
  21.         CrossWorkbookFormula.prototype.defaultValue = function () { return '取数中...'; };
  22.         CrossWorkbookFormula.prototype.evaluateAsync = (context, workbookName, sheetName, range) => {
  23.           setTimeout(function(){context.setAsyncResult("123")});
  24.         };
  25.         GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("CROSSWORKBOOK", new CrossWorkbookFormula());
复制代码
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-5 14:41:36
板凳
您好,请参考楼上的回复尝试一下看能否解决您的问题。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-5 15:09:28
地板
Joestar.Xu 发表于 2023-6-5 14:41
您好,请参考楼上的回复尝试一下看能否解决您的问题。

已解决
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-5 15:16:14
5#

好的,那就先结贴了,后续有问题随时开贴提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部