Chaining function calls.

by opencpu

HTML

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="//cdn.opencpu.org/opencpu-0.4.js"></script>
<button id="postbutton" type="button">Test!</button> <br><br>

Session ID: <tt id="key"></tt> <br >
Session Location: <tt id="location"></tt> 

<pre><code id="output"></code></pre> 

<button id="getbutton" type="button" disabled="disabled">Get Object</button>

CSS

pre {
    border: solid gray 1px;
    padding: 5px;
    margin: 10px;
}

JavaScript

//set CORS to call "appdemo" package on public server
ocpu.seturl("//public.opencpu.org/ocpu/library/stats/R")

//global var
var mysession;

//calls R function: stats::rnorm(n=100, mean=runif(1)):
$("#postbutton").click(function(){
    var rnd = Math.random();
    var req = ocpu.call("rnorm", {n: 100, mean:rnd}, function(session){
        //assign to global var
        mysession = session;
        
        //read the session properties (just for fun)
        $("#key").text(mysession.getKey());
        $("#location").text(mysession.getLoc());
        
        //retrieve session console (async)
        mysession.getConsole(function(outtxt){
            $("#output").text(outtxt);
        });
        
        //enable the other button
        $("#getbutton").removeAttr("disabled");
    }).fail(function(){
        alert("Error: " + req.responseText);
    });
});

$("#getbutton").click(function(){
    //retrieve object (async)
    mysession.getObject(function(data){
        //data is the object returned by the R function
        alert("Array of length " + data.length + ".\nFirst few values:" + data.slice(0,3)); 
    });
});