SpreadJS 13
GC.Spread.CalcEngine Namespace / AsyncEvaluateContext type / setAsyncResult Method
The async function evaluate result.
In This Topic
    setAsyncResult Method
    In This Topic
    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