SpreadJS Documentation
setAsyncResult Method
GC.Spread.CalcEngine Namespace > AsyncEvaluateContext type : setAsyncResult Method
The async function evaluate result.
Set the async function evaluate result to CalcEngine, CalcEngine uses this value to recalculate the cell that contains this async function and all dependents cells.
Syntax
var instance = new GC.Spread.CalcEngine.AsyncEvaluateContext(context);
var returnValue; // Type: any
returnValue = instance.setAsyncResult(value);
function setAsyncResult( 
   value : object
) : any;

Parameters

value
The async function evaluate result.
Example
This example uses the refresh formula.
<!DOCTYPE html>
<html>
<head>
    <title>Spread.Sheets</title>
<link href="./css/gc.spread.sheets.12.0.0.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="./scripts/gc.spread.sheets.all.12.0.0.min.js"></script>
<!--jQuery References-->
<script src="http://code.jquery.com/jquery-2.0.2.js" type="text/javascript"></script>

  <script type="text/javascript">
                                window.onload = function(){
            var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"),{sheetCount:3});                                           
            var sheet = spread.getActiveSheet();

            var GetNumberFromServer = function () {
            }
            GetNumberFromServer.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction("GETNUMBERFROMSERVER", 2, 2);
            GetNumberFromServer.prototype.evaluate = function (context, arg1, arg2) {
                var self = this;
                $.get('http://xa-tools-shdev/asyncfunction/api/values/' + (arg1 || 1), function (value) {
                    context.setAsyncResult(value);
                });
            }

            GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("GETNUMBERFROMSERVER", new GetNumberFromServer());
            sheet.setValue(0, 0, 'ChangeValue');
            sheet.setValue(0, 1, 'Formula');
            sheet.setValue(0, 2, 'Result');
            sheet.setValue(0, 3, 'Comments');
            sheet.setValue(1, 3, 'On A2 changed');
            sheet.setValue(2, 3, 'On A2 changed');
            sheet.setValue(3, 3, 'Evaluate once');
            sheet.setValue(4, 3, 'Every 2 seconds');
            sheet.setValue(1, 0, 1);
            sheet.setValue(1, 1, '=GetNumberFromServer(A2)');
            sheet.setValue(2, 1, '=Refresh(GetNumberFromServer(A2), 0)');
            sheet.setValue(3, 1, '=Refresh(GetNumberFromServer(A2), 1)');
            sheet.setValue(4, 1, '=Refresh(GetNumberFromServer(A2), 2, 2000)');
            sheet.setFormula(1, 2, '=GetNumberFromServer(A2)');
            sheet.setFormula(2, 2, '=Refresh(GetNumberFromServer(A2), 0)');
            sheet.setFormula(3, 2, '=Refresh(GetNumberFromServer(A2), 1)');
            sheet.setFormula(4, 2, '=Refresh(GetNumberFromServer(A2), 2, 2000)');
            sheet.setColumnWidth(0, 100);
            sheet.setColumnWidth(1, 300);
            sheet.setColumnWidth(2, 200);
            sheet.setColumnWidth(3, 200);
            sheet.setValue(7, 1, "=Refresh(now(), 2, 1000)");
            sheet.setValue(7, 3, "Every 1 seconds");
            sheet.setFormula(7, 2, "=Refresh(now(), 2, 1000)");

            var GetTimeFromServer = function () {
            }
            GetTimeFromServer.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction("GETTIMEFROMSERVER", 2, 2);
            GetTimeFromServer.prototype.evaluate = function (context) {
                $.get('http://xa-tools-shdev/asyncfunction/api/time/', function (value) {
                    context.setAsyncResult(value);
                });
            }
            GetTimeFromServer.prototype.evaluateMode = function () {
                return 2;
            };
            GetTimeFromServer.prototype.interval = function () {
                return 1000;
            };

            GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("GETTIMEFROMSERVER", new GetTimeFromServer());
            sheet.setValue(10, 1, "=GetTimeFromServer()");
            sheet.setValue(10, 3, "Every 1 seconds");
            sheet.setFormula(10, 2, "=GetTimeFromServer()");
            sheet.getCell(10, 2).hAlign(GC.Spread.Sheets.HorizontalAlign.right);
}
</script>
</head>
<body>
    <div id="ss" style="width:100%;height:500px;border:1px solid gray"></div>
</body>
</html>
See Also

Reference

AsyncEvaluateContext type