您好,附件demo1复现了您的问题,
原因说明:
直接在evaluateAsync 调用setAsyncResult。
(setAsyncResult将直接调用recalculate 并清除calcChain。
但是setFormula也将调用recalculate, 导致报错:" Cannot read property '0' of undefined")
现解决方案如下
- var asum = function () {};
- asum.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction('ASUM', 1, 255);
- asum.prototype.defaultValue = function () { return 'Loading...'; };
- asum.prototype.evaluateAsync = function (context, arg) {
- context.setAsyncResult(1);
- };
- sheet.addCustomFunction(new asum());
复制代码 将以上代码修改如下:
- var asum = function () {};
- asum.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction('ASUM', 1, 255);
- asum.prototype.defaultValue = function () { return 'Loading...'; };
- asum.prototype.evaluateAsync = function (context, arg) {
- setTimeout(()=>{context.setAsyncResult(1);});
- };
- sheet.addCustomFunction(new asum());
复制代码
请参考附件的demo尝试解决您的问题。
|
|