[]
CalcEngine.Functions.AsyncFunction
↳ AsyncFunction
• new AsyncFunction(name
, minArgs?
, maxArgs?
, description?
)
Represents an abstract base class for defining asynchronous functions.
example
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 | Type | Description |
---|---|---|
name |
string |
The name of the function. |
minArgs? |
number |
- |
maxArgs? |
number |
- |
description? |
IFunctionDescription |
- |
• maxArgs: number
Represents the maximum number of arguments for the function.
• minArgs: number
Represents the minimum number of arguments for the function.
• name: string
Represents the name of the function.
• typeName: string
Represents the type name string used for supporting serialization.
▸ acceptsArray(argIndex
): boolean
Determines whether the function accepts array values for the specified argument.
function
Name | Type | Description |
---|---|---|
argIndex |
number |
Index of the argument. |
boolean
true
if the function accepts array values for the specified argument; otherwise, false
.
▸ acceptsError(argIndex
): boolean
Indicates whether the function can process Error values.
function
Name | Type | Description |
---|---|---|
argIndex |
number |
Index of the argument. |
boolean
true
if the function can process Error values for the specified argument; otherwise, false
.
▸ acceptsMissingArgument(argIndex
): boolean
Indicates whether the Evaluate method can process missing arguments.
Name | Type | Description |
---|---|---|
argIndex |
number |
Index of the argument |
boolean
true
if the Evaluate method can process missing arguments; otherwise, false
.
Function.acceptsMissingArgument
▸ acceptsReference(argIndex
): boolean
Determines whether the function accepts Reference values for the specified argument.
function
Name | Type | Description |
---|---|---|
argIndex |
number |
Index of the argument. |
boolean
true
if the function accepts Reference values for the specified argument; otherwise, false
.
▸ defaultValue(): any
Returns the default value of the evaluated function result before getting the async result.
any
The default value of the evaluated function result before getting the async result.
▸ description(): IFunctionDescription
Returns the description of the function.
function
The description of the function.
▸ evaluate(...args
): any
Returns the result of the function applied to the arguments.
Name | Type | Description |
---|---|---|
...args |
any |
Arguments for the function evaluation |
any
The result of the function applied to the arguments.
▸ evaluateAsync(context
, args
): any
Returns the result of the function applied to the arguments.
Name | Type | Description |
---|---|---|
context |
AsyncEvaluateContext |
The evaluate context |
args |
any |
Arguments for the function evaluation |
any
The result of the function applied to the arguments.
▸ evaluateMode(): AsyncFunctionEvaluateMode
Decides how to re-calculate the formula.
The evaluate mode.
▸ findBranchArgument(test
): number
Finds the branch argument.
example
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);
Name | Type | Description |
---|---|---|
test |
any |
The test. |
number
Indicates the index of the argument that would be treated as the branch condition.
▸ findTestArgument(): number
Finds the test argument when this function is branched.
example
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
Indicates the index of the argument that would be treated as the test condition.
▸ interval(): number
Returns the interval.
number
The interval in milliseconds.
▸ isBranch(): boolean
Gets a value that indicates whether this function is branched by arguments as conditional.
example
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
if this instance is branched; otherwise, false
.
▸ isContextSensitive(): boolean
Determines whether the evaluation of the function is dependent on the context in which the evaluation occurs.
boolean
true
if the evaluation of the function is dependent on the context; otherwise, false
.
▸ isVolatile(): boolean
Determines whether the function is volatile while it is being evaluated.
boolean
true
if the function is volatile; otherwise, false
.