[]
CalcEngine.Functions.AsyncFunction
↳ AsyncFunction
• new AsyncFunction(name
, minArgs?
, maxArgs?
, description?
)
表示用于定义异步函数的抽象基类
代码示例
class WeatherFunction extends GC.Spread.CalcEngine.Functions.AsyncFunction {
constructor () {
super('WEATHER', 0, 0, {
description: "Get Weather",
parameters: []
});
}
evaluate (context) {
setTimeout(function () { context.setAsyncResult('sunny'); }, 100);
}
}
spread.addCustomFunction(new WeatherFunction());
spread.getActiveSheet().setFormula(0, 0, '=WEATHER()');
属性名 | 类型 | 说明 |
---|---|---|
name |
string |
函数的名称 |
minArgs? |
number |
函数的最小参数数目 |
maxArgs? |
number |
函数的最大参数数目 |
description? |
IFunctionDescription |
函数的描述 |
• maxArgs: number
函数的最大参数数量
• minArgs: number
函数的最小参数数量
• name: string
函数的名称
• typeName: string
支持序列化的类型名称字符串
▸ acceptsArray(argIndex
): boolean
函数是否接收指定参数的数组值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数接收指定参数的数组值;若为false
则不接收
▸ acceptsError(argIndex
): boolean
函数是否可以处理错误值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数可以处理指定参数的错误值;若为 false
则不可处理
▸ acceptsMissingArgument(argIndex
): boolean
Evaluate方法是否可以处理丢失的参数
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, Evaluate方法可以处理缺失的参数; 如果为false
则不可处理
Function.acceptsMissingArgument
▸ acceptsReference(argIndex
): boolean
函数是否接收指定参数的引用值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数接收指定参数的引用值;若为 false
则不接收
▸ defaultValue(): any
在获取异步结果之前,返回已计算函数结果的默认值
any
获取异步结果之前计算的函数结果的默认值
▸ description(): IFunctionDescription
返回函数的描述
function
函数的描述
▸ evaluate(...args
): any
返回函数作为参数
属性名 | 类型 | 说明 |
---|---|---|
...args |
any |
函数求值的参数 |
any
应用于参数的函数
▸ evaluateAsync(context
, args
): any
返回函数作为参数
属性名 | 类型 | 说明 |
---|---|---|
context |
AsyncEvaluateContext |
计算上下文 |
args |
any |
函数求值的参数 |
any
应用于参数的函数
▸ evaluateMode(): AsyncFunctionEvaluateMode
设置如何重新计算公式
计算模式
▸ findBranchArgument(test
): number
查找分支参数
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
属性名 | 类型 | 说明 |
---|---|---|
test |
any |
测试 |
number
将作为分支条件的参数的索引
▸ findTestArgument(): number
在分支此函数时查找测试参数
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
number
将被视为测试条件的参数索引
▸ interval(): number
返回时间间隔
number
以毫秒为单位的间隔
▸ isBranch(): boolean
获取表示此函数是否由参数作为条件分支的值
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
boolean
为true
时,该实例是分支;若 false
则不是
▸ isContextSensitive(): boolean
确定函数的计算是否依赖于计算的上下文
boolean
为true
时,函数的计算依赖于上下文;若为 false
则不依赖
▸ isVolatile(): boolean
确定函数在计算时是否易失
boolean
为true
时,则函数是易失的;若为false
则不是